【问题标题】:__doPostBack reloading entire page instead of just the UpdatePanel__doPostBack 重新加载整个页面,而不仅仅是 UpdatePanel
【发布时间】:2011-06-24 23:32:02
【问题描述】:

在我的 javascript 中,我有以下行:

__doPostBack('MyPanel', MyParam);

在后面的代码中,我使用 MyParam 查询数据库并将结果绑定到 MyPanel 更新面板内的网格视图。更新面板的更新模式设置为有条件的,在我有MyPanel.Update();的代码的回发部分中@

当我进行排序和分页时,更新面板工作正常;只有面板被刷新。但是,当我使用 javascript 触发更新面板时,我看到 firebug 中的流量显示整个页面正在刷新。

解决办法是什么?

谢谢。

【问题讨论】:

    标签: asp.net updatepanel postback


    【解决方案1】:

    我的假设:您的更新面板位于命名容器内,因此它在客户端的 ID 与服务器端的 ID 会有些不同。这意味着您将错误的 __EVENTTARGET 参数传递给客户端 side __doPostBack 函数,并且您的部分回发已满(意味着不异步)。

    因此将您的客户端代码更改为:

    __doPostBack('<%= MyPanel.ClientID %>', MyParam);
    

    应该能解决问题。

    顺便说一句,您可以从服务器端获取第二个(代码中的MyParam)参数:

    var arg = Request.Params.Get("__EVENTARGUMENT");
    

    【讨论】:

    • 是的,面板命名不正确。如何区分排序/分页回发和我的自定义回发。是的,我可以解析 var arg 但我想知道框架是否提供了另一种方式。感谢您解决我的问题!
    • @frenchie:是的,还有另一种存档方式——通过实现IPostBackEventHandler 接口。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2017-10-29
    • 1970-01-01
    • 2013-09-18
    • 2016-04-19
    相关资源
    最近更新 更多