【发布时间】:2014-04-25 21:05:16
【问题描述】:
我需要能够在悬停菜单时填充悬停菜单,而不是在加载页面时填充悬停菜单数据的整个网格视图。换句话说,我需要“即时”填充它们。
我已将弹出窗口的内容与示例文本一起放入 Web 用户控件中。因此,当悬停在 GridView 行上时,我需要填充此用户控件。
这是 .aspx 页面:
<asp:Panel ID="PopupPanel" runat="server" CssClass="modal" style="display: none;">
<g3:OrderDetailsPopup ID="OrderPopup" runat="server"></g3:OrderDetailsPopup>
</asp:Panel>
<ajaxToolkit:HoverMenuExtender ID="HoverPopupExtender" runat="server" TargetControlID="PopupPanel" PopupControlID="PopupPanel" PopupPosition="Top" PopDelay="0"/>
用户控件“OderDetailsPopup”的内容:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="OrderDetailsPopup.ascx.vb" Inherits="UserControls_OrderDetailsPopup" %>
<asp:Panel ID="PopupPanel" runat="server">
<div class="modal-header">
<h3>Order Details</h3>
</div>
<div class="modal-body">
<asp:Label ID="Label" runat="server">LABELBABEL</asp:Label>
</div>
</asp:Panel>
.aspx 页面背后的旧代码(我只是在页面数据绑定时填充。GridView 'gvOrderDetails' 在页面上,而不是在上面的用户控件中。我从两者中删除它以简化这一点示例):
Protected Sub GridView1_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowCreated
If e.Row.RowType = DataControlRowType.DataRow Then
Dim hoverMenu As HoverMenuExtender = e.Row.FindControl("HoverPopupExtender")
e.Row.ID = e.Row.RowIndex.ToString()
hoverMenu.TargetControlID = e.Row.ID
End If
End Sub
Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim detailsGrid As GridView = e.Row.Cells(5).FindControl("gvOrderDetails")
detailsGrid.DataSource = New G3.Entity.TaskDetails().GetDetailsByOrder(CType(e.Row.DataItem, DataRowView)("travelOrderID"))
detailsGrid.DataBind()
End If
End Sub
详细地说,我的悬停菜单之前运行良好,但是加载 300 行的页面需要很长时间,并且每行内都有一个带有自己数据的弹出悬停菜单。所以这里的目标是:
- 用户控件中弹出代码的可重用性
- 即时弹出悬停菜单。
【问题讨论】:
-
基本上,我们只是决定在加载用户控件时进行数据库调用。 /耸肩
标签: asp.net ajax vb.net user-controls dynamically-generated