JavaScript回调函数在通过ScriptManager.RegisterStartupScript调用时无法找到控
本文关键字:调用 RegisterStartupScript 函数 回调 ScriptManager JavaScript | 更新日期: 2023-09-27 18:11:39
我的按钮点击事件是这样的:
protected void btnSave_Click(object sender, EventArgs e)
{
// Save logic goes here
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "saveCallback", "SaveGridChanges();", true);
}
正如你所看到的,我试图调用函数SaveGridChanges();
function SaveGridChanges()
{
var radGrid1 = $find('<%=RadGrid1.ClientID%>');
radGrid1.get_batchEditingManager().saveChanges(radGrid1.get_masterTableView());
}
问题是,当函数被调用时,我得到JavaScript错误,因为它无法找到网格。这很可能是因为脚本试图在网格输出到页面之前运行。有什么建议吗?
确切的错误信息是:
Uncaught TypeError: Cannot read property 'get_batchEditingManager' of null. Uncaught TypeError: Cannot read property 'disable' of null.
我已经尝试在page_load和pre_render上注册脚本,网格在那些时候仍然不可用。
我最终做了以下事情,它似乎正在工作。但是,不确定它有多可靠。
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "saveCallBack", "setTimeout(SaveGridChanges, 100);", true);
我假设setTimeout给jQuery时间加载或任何$find依赖。
如果有人有更好的解决方案,请发帖。