Asp.net 悬停时动态填充AJAX悬停菜单
我需要能够在鼠标悬停在鼠标悬停菜单上时填充鼠标悬停菜单,而不是在加载页面时填充鼠标悬停菜单数据的整个gridview。换句话说,我需要“动态”填充它们 我将弹出窗口的内容与示例文本一起放在Web用户控件中。因此,当鼠标悬停在GridView行上时,我需要填充此用户控件 以下是.aspx页面:Asp.net 悬停时动态填充AJAX悬停菜单,asp.net,ajax,vb.net,user-controls,dynamically-generated,Asp.net,Ajax,Vb.net,User Controls,Dynamically Generated,我需要能够在鼠标悬停在鼠标悬停菜单上时填充鼠标悬停菜单,而不是在加载页面时填充鼠标悬停菜单数据的整个gridview。换句话说,我需要“动态”填充它们 我将弹出窗口的内容与示例文本一起放在Web用户控件中。因此,当鼠标悬停在GridView行上时,我需要填充此用户控件 以下是.aspx页面: <asp:Panel ID="PopupPanel" runat="server" CssClass="modal" style="display: none;"> <g3:Ord
<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"/>
更详细地说,我的鼠标悬停菜单以前工作得很好,但是加载一个包含300行的页面需要很长时间,每行中都有一个带有自己数据的弹出鼠标悬停菜单。因此,这里的目标是:
- 用户控件中弹出代码的可重用性
- 动态弹出鼠标悬停菜单
Public Function RenderMe(OrderID As Integer) As String
Dim stringBuilder As StringBuilder = New StringBuilder()
If ID > 0 Then
ViewModel = New VM()
ViewModel.ID = ID
ViewModel.Fill()
OrderDetails.DataSource = ViewModel.T
DataBind()
Dim stringWriter As StringWriter = New StringWriter(stringBuilder)
Dim writer As HtmlTextWriter = New HtmlTextWriter(stringWriter)
Render(writer)
End If
Return stringBuilder.ToString()
End Function
基本上,我们只是决定在用户控件加载时进行DB调用/耸肩
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
Public Function RenderMe(OrderID As Integer) As String
Dim stringBuilder As StringBuilder = New StringBuilder()
If ID > 0 Then
ViewModel = New VM()
ViewModel.ID = ID
ViewModel.Fill()
OrderDetails.DataSource = ViewModel.T
DataBind()
Dim stringWriter As StringWriter = New StringWriter(stringBuilder)
Dim writer As HtmlTextWriter = New HtmlTextWriter(stringWriter)
Render(writer)
End If
Return stringBuilder.ToString()
End Function