繁体   English   中英

通过ScriptManager.RegisterStartupScript调用时,JavaScript回调函数无法找到控件

[英]JavaScript callback function unable to find control when calling through ScriptManager.RegisterStartupScript

这是我的按钮单击事件的样子:

protected void btnSave_Click(object sender, EventArgs e)
{
    // Save logic goes here
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "saveCallback", "SaveGridChanges();", true);
}

如您所见,我正在尝试调用函数SaveGridChanges();。 保存逻辑运行后的js函数。

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依赖什么。

如果有人有更好的解决方案,请发布。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM