【问题标题】:Dynamically populate AJAX hovermenu when hovering悬停时动态填充 AJAX hovermenu
【发布时间】: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


【解决方案1】:

基本上,我们决定在加载用户控件时简单地进行数据库调用.. 这极大地改善了页面加载时间。并且几乎解决了这个问题。

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

【讨论】:

    猜你喜欢
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2014-07-19
    • 1970-01-01
    • 2018-10-15
    • 2021-12-24
    • 2015-11-24
    相关资源
    最近更新 更多