我有一个自定义控件,它是ASPxGridView的包装器。此自定义控件嵌套在UpdatePanel中。在其中一个列中,我添加了一个LinkButton,我通过调用ScriptManager.RegisterPostBackControl来注册。
网格已启用分页。分页当然是在AsyncPostBack中完成的。
当网格显示其第一页时,一切都按预期工作:单击按钮导致PostBack。
但是,如果当前页面不是第一个,单击按钮一次不会导致PostBack,再次单击它(实际上单击列中的任何按钮)会引发错误。
如果我注释掉使用ScriptManager注册按钮的行并在第一页上单击按钮,则会抛出同样的错误。
因此,这让我认为第一页中的按钮已正确注册,因为这是在PostBack期间完成的,并且任何其他页面中按钮的注册失败(由于某种原因),因为它是在AsyncPostBack期间完成的
有什么想法?一个可能的解决方案?
提前致谢
答案 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 解决了这个问题。