从.cs调用Javascript函数

时间:2014-05-19 15:21:47

标签: c# javascript .net

我有一个更新面板,按钮和网格添加如下: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函数永远不会被调用!如果我以正确的方式调用该函数,请告诉我。

2 个答案:

答案 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。