在AsyncPostBack期间调用ScriptManager.RegisterPostBackControl

时间:2010-10-13 03:42:31

标签: asp.net asp.net-ajax updatepanel scriptmanager

我有一个自定义控件,它是ASPxGridView的包装器。此自定义控件嵌套在UpdatePanel中。在其中一个列中,我添加了一个LinkBut​​ton,我通过调用ScriptManager.RegisterPostBackControl来注册。

网格已启用分页。分页当然是在AsyncPostBack中完成的。

当网格显示其第一页时,一切都按预期工作:单击按钮导致PostBack。

但是,如果当前页面不是第一个,单击按钮一次不会导致PostBack,再次单击它(实际上单击列中的任何按钮)会引发错误。

如果我注释掉使用ScriptManager注册按钮的行并在第一页上单击按钮,则会抛出同样的错误。

因此,这让我认为第一页中的按钮已正确注册,因为这是在PostBack期间完成的,并且任何其他页面中按钮的注册失败(由于某种原因),因为它是在AsyncPostBack期间完成的

有什么想法?一个可能的解决方案?

提前致谢

2 个答案:

答案 0 :(得分:0)

我认为您需要在UpdatePanel之后重新注册控制按钮的Javascript。要做到这一点:

var prm = Sys.WebForms.PageRequestManager.getInstance();    
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);

function InitializeRequest(sender, args) {      
}

function EndRequest(sender, args) {
}

确保在PageLoad之后或在脚本管理器之后运行此stript,以便给页面加载Sys对象的时间。

答案 1 :(得分:0)

我通过将 ASPxGridView EnableCallbacks 属性设置为 false 解决了这个问题。