作者 :克里斯蒂安·温茨
AJAX 控件工具包中的 HoverMenu 控件提供一个简单的弹出效果:当鼠标指针悬停在元素上时,弹出窗口将显示在指定位置。 还可以在重复器中使用此控件。
概述
HoverMenu AJAX 控件工具包中的控件提供了一个简单的弹出效果:当鼠标指针悬停在元素上时,弹出窗口将显示在指定位置。 还可以在重复器中使用此控件。
步骤
首先,需要数据源。 此示例使用 AdventureWorks 数据库和 Microsoft SQL Server 2005 Express Edition。 该数据库是 Visual Studio 安装(包括 Express 版)的可选部分,也可以单独下载 https://go.microsoft.com/fwlink/?LinkId=64064。 AdventureWorks 数据库是 SQL Server 2005 示例和示例数据库的一部分(下载位置 https://www.microsoft.com/download/details.aspx?id=10679)。 设置数据库的最简单方法是使用 Microsoft SQL Server Management Studio (/sql/ssms/download-sql-server-management-studio-ssms)并附加 AdventureWorks.mdf 数据库文件。
对于此示例,我们假定调用 SQLEXPRESS SQL Server 2005 Express Edition 的实例并驻留在 Web 服务器所在的同一台计算机上;这也是默认设置。 如果设置不同,则必须调整数据库的连接信息。
若要激活 ASP.NET AJAX 和 Control Toolkit 的功能,必须将 ScriptManager 控件放在页面上的任意位置(但在元素中 <form> ):
<asp:ScriptManager ID="asm" runat="server" />
然后,向页面添加数据源。 为了使用有限的数据量,我们只选择 AdventureWorks 数据库的 Vendor 表中的前五个条目。 如果使用 Visual Studio 助手创建数据源,请注意当前版本中的 bug 不会为表名称 (Vendor) 加上 Purchasing前缀。 以下标记显示了正确的语法:
<asp:SqlDataSource ID="sds1" runat="server" ConnectionString="
Data Source=(local)\SQLEXPRESS;Initial Catalog=AdventureWorks;Integrated Security=True"
ProviderName="System.Data.SqlClient" SelectCommand="SELECT TOP 5
[VendorID], [Name] FROM [Purchasing].[Vendor]" />
接下来,添加充当模式弹出窗口的面板:
<asp:Panel ID="HoverPanel" runat="server">
More info ...
</asp:Panel>
现在,它 HoverMenuExtender 开始发挥作用。 因此,为了使数据源中的每个元素都拥有其自己的弹出窗口,扩展必须放在 repeater 的 <ItemTemplate> 节中。 下面是标记内容:
<asp:Repeater ID="rep1" DataSourceID="sds1" runat="server">
<ItemTemplate>
<br />
<asp:Panel ID="myPanel" runat="server" Width="400px" BackColor="Lime" BorderWidth="1px">
<div>
Vendor
<%#DataBinder.Eval(Container.DataItem, "Name")%>
</div>
</asp:Panel>
<br />
<ajaxToolkit:HoverMenuExtender ID="hme" runat="server" TargetControlID="myPanel"
PopupControlID="HoverPanel" PopupPosition="Right" PopDelay="50" />
</ItemTemplate>
</asp:Repeater>
现在,数据源中的每个项目在延迟50毫秒(PopDelay属性)后,会在右侧(PopupPosition属性)显示一个弹出窗口。
悬停菜单显示在重复器中的每个项旁边(单击以查看全尺寸图像)