【问题标题】:How can i update updatepanel with out postpack ASP.net如何在没有回发 ASP.net 的情况下更新更新面板
【发布时间】:2012-09-18 18:33:14
【问题描述】:

我在 updatePanel 中有一个网格视图,我需要每隔一段时间更新一次

到目前为止,我在更​​新 updatepanel 时发现的是:

   <asp:UpdatePanel ID="UpdatePanel2" runat="server" OnLoad="Button1_Click">
        <ContentTemplate>
            <fieldset>
            <legend>UpdatePanel</legend>
            <asp:Label ID="Label2" runat="server" Text="Panel created.">
             </asp:Label>
            <asp:Button ID="Button1" runat="server"   
           OnClientClick="__doPostBack('UpdatePanel2', '');" Text="Button" />
            </fieldset>
        </ContentTemplate>
    </asp:UpdatePanel>

还有这个子

  Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Label2.Text = "Refreshed at " & _
        DateTime.Now.ToString()
End Sub

虽然这可以正常工作并更新面板,但它postback 整个页面,你可以知道当你看到所有图像重新加载到另一个面板中时,我计划每秒更新一次这个面板

问题是如何更新UpdatePanel2而不影响回发的其他面板

编辑

另一个问题在服务器端运行任何东西做回发吗?

谢谢

【问题讨论】:

    标签: asp.net .net vb.net webforms


    【解决方案1】:

    从 NET 3.5 开始,有 Web.UI.Timer 控件:

    按定义的时间间隔执行异步或同步网页回发。

    它能够与UpdatePanels 一起工作,确保数据(例如 ViewState 和更新的控件值)不会丢失,并且“只是另一个 WebForm 控件”。但是,Timer 必须仍然导致[部分]回发通过页面生命周期并再次重新绑定网格。

    根据具体的用例,最好使用 true AJAX 方法来最小化页面生命周期和数据大小开销。 (Telerik、DevExpress 和其他 3rd 方库支持其 Grid 控件的“轻量级回调”。更轻量级的变体可能包括 jqGrid。)

    【讨论】:

    • 它回发整个页面,你有没有其他选择只针对gridview
    • 谢谢,看起来不错,但是我如何使用 javascript 更新 updatepanel
    • @MinaGabriel 任何使用 [部分] 回发的 WebControl 也是如此。我已经包含了使用更新面板的链接。最简单的方法是将both Grid 和 Timer 放在同一个更新面板中,这样当 Timer 回发时,它将导致部分页面更新和更新面板(以及内部的 Grid它)将被更新。
    • @MinaGabriel Timer 控件将执行此操作(无需自定义 JavaScript)。根据我的经验,最好创建/拥有一个特殊的“触发器”控件。虽然可以手动调用适当的 __doPostBack 魔法,但这需要大量关于 ASP.NET-WebForms 如何工作的知识才能正确使用。
    • @MinaGabriel 在内部,UI Timer 将使用setTimeout(或类似的)并发出适当的__doPostBack 来触发回发(脚本管理器将酌情将其转换为部分回发)。然而,这被控件/框架很好地封装了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多