我有一个更新面板,按钮和网格添加如下:this._UpdatePanel.ContentTemplateContainer.Controls.Add(this._BtnSave); this._UpdatePanel.ContentTemplateContainer.Controls.Add(this._AssignGrid);
单击此按钮,我调用的函数位于另一个类AssignedGrid.cs中。 this._AssignedGrid.getSelectedRows();
AssignedGrid.cs inturn调用javascript函数,如下所示:
public void getSelectedRows()
{
this.Page.ClientScript.RegisterStartupScript(Page.GetType(), "GetSelectedItems", "<script type='text/javascript' language='javascript'>GetSelectedItems();</script>");
}
但是这个javascript函数永远不会被调用!如果我以正确的方式调用该函数,请告诉我。
答案 0 :(得分:1)
你不必提供脚本标签
ScriptManager.RegisterStartupScript(this, GetType(), "GetSelectedItems", "GetSelectedItems();", true);
答案 1 :(得分:1)
这应该有效,
ScriptManager.RegisterStartupScrip(this.Page, this.Page.GetType(), "GetSelectedItems", "GetSelectedItems();", true);
脚本管理器的第一个参数需要页面对象(http://msdn.microsoft.com/en-us/library/bb310408(v=vs.110).aspx)
这可能是用户控件,Web控件等,而不是实际的页面对象,因此它不起作用。唯一可行的方法是,如果您在页面的上下文中,例如就像一个继承自页面的类。
所以只需明确地将页面对象发送给它。
如果你有这个,如果没有被调用,请使用Chrome之类的浏览器,打开开发人员工具(f12)并转到控制台窗口查找javascript错误。如果它被调用但没有找到你应该看到&#34; GetSelectedItems不存在&#34;或类似的错误。这意味着您的函数在调用它的代码被ScriptManager插入dom顺序后被声明和加载。
ScriptManager将在close标签之前的页面末尾插入代码调用,因此在标签或其上方的某处定义GetSelectedItems。