从.cs调用Javascript函数

本文关键字:函数 Javascript 调用 cs | 更新日期: 2023-09-27 18:04:08

我有一个更新面板,其中按钮和网格添加如下:this._UpdatePanel.ContentTemplateContainer.Controls.Add(this._BtnSave);this._UpdatePanel.ContentTemplateContainer.Controls.Add (this._AssignGrid);

单击此按钮时,我正在调用驻留在不同类assigndgrid .cs中的函数。this._AssignedGrid.getSelectedRows ();

assigndgrid .cs return调用如下javascript函数:

  public void getSelectedRows()
  {
      this.Page.ClientScript.RegisterStartupScript(Page.GetType(), "GetSelectedItems", "<script type='text/javascript' language='javascript'>GetSelectedItems();</script>");    
  }

但是这个javascript函数从来没有被调用过!

从.cs调用Javascript函数

请告诉我是否以正确的方式调用函数。

应该可以,

ScriptManager.RegisterStartupScrip(this.Page, this.Page.GetType(), "GetSelectedItems", "GetSelectedItems();", true);

Script管理器的第一个参数需要一个页面对象(http://msdn.microsoft.com/en-us/library/bb310408(v=vs.110).aspx)

这可能是一个用户控件,web控件等,而不是一个实际的页面对象,因此它不能工作。只有当你在一个页面的上下文中,比如一个继承了page的类时,这个方法才会起作用。

那么就显式地给它发送page对象

一旦你有了,如果它没有被调用,使用浏览器,如Chrome,打开开发人员工具(f12),并进入控制台窗口,寻找javascript错误。如果它被调用,但没有找到,你应该看到"GetSelectedItems不存在"或类似的错误。这意味着你的函数是在调用它的代码被ScriptManager按dom顺序插入之后被声明和加载的。

ScriptManager将在页面末尾的关闭标记之前插入代码调用,因此在标记中或在其上方定义GetSelectedItems。

你不需要给脚本标签

ScriptManager.RegisterStartupScript(this, GetType(), "GetSelectedItems", "GetSelectedItems();", true);