使用javascript触发asp:按钮单击事件

我目前正在开发一个项目,需要在javascript代码中执行一系列事件后触发asp:按钮单击事件。

请参阅下面的代码:

这是我的按钮,它是点击事件:

 protected void btnRefresh_Click(object sender, EventArgs e) { MyGrid.DataSource = null; MyGrid.DataSource = GetDataForGrid(); MyGrid.DataBind(); } 

我引用了一个javascript文件,其中包含我的所有页面的javascript代码。 我是这样做的,因为我不喜欢在我的.aspx文件中混合我的javascript代码。

这是函数在我的外部.js文件中的样子:

 function Refresh() { var btn = $(document).getElementById('btnRefresh'); if (btn) { btn.click(); } else { alert('false'); } } 

我也尝试过我在互联网上看到的其他方式如下所有这些都没有运气:

 document.getElementById('btnRefresh'); __doPostBack('btnRefresh', ''); __doPostBack('btnRefresh', 'Click'); $('#btnRefresh').click(); 

有人可以指点我这么做的好方法吗? 谢谢!

编辑:

我想要做的是:我在UpdatePanel中有一个gridview。 我有一个触发器,当单击btnRefresh时会触发该触发器。 基本上,它刷新了我的gridview。 因此,我无法使用按钮的OnClick属性来调用我的javascript函数,因为我不会在第一时间单击该按钮。 我需要能够从我的外部JavaScript调用btnRefresh_Click事件,以便触发我的触发器来更新我的GridView。

编辑2:

我尝试使用下面的行在.aspx页面上定义我的btn

var btn = $(“#”);

我还改变了我的JS代码如下:

function Refresh(){if(btn){btn.click(); } else {alert(’false’); }}

js能够看到btn并且它事件通过了btn.click()然而,我的btnRefresh_Click仍然没有启动。 我在这里错过了什么吗?

在这里,您可以使用OnClientClick属性并提及要在外部js中调用的函数的名称,因为此属性实际上在执行服务器端事件之前执行。

看看ClientID属性。

您可以使用该属性获取客户端按钮的ID,并使用ID触发单击。

 function Refresh() { var btn = $("#<%=btnRefresh.ClientID%>"); if (btn) { btn.click(); } else { alert('false'); } } 

但请注意, <%=btnRefresh.ClientID%>只能在与btnRefresh相同的页面上工作,而不能在外部JS文件中工作。 ClientID由ASP.NET动态生成。

由于您引用了JS文件,因此有两种选择。 传递按钮的ClientID或将按钮的ClientIDMode设置为Static

我建议你把id传递给JS函数。

 function Refresh(id) { var btn = $(document).getElementById(id); if (btn) { btn.click(); } else { alert('false'); } } 

如果要在另一个JS函数中调用它,请传入ClientID

 function doSomthing(){ //do this //do that Refresh('<%=btnRefresh.ClientID%>'); } 

但正如你所说,如果你不喜欢把JS放在你的aspx页面中,那么只需设置你的按钮的ClientIDMode = Static

  

这是我过去使用过的’hack’

客户端可以看到的按钮是

  

在Web表单中定义这样的按钮

  

在你的JavaScript中你会有

 function clicked(){ document.getElementById("ctl02_Triggered").click(); } 

根据您使用的asp版本,ID会发生变化,因此请务必检查按钮的实际ID,以便通过js触发它。 我之所以提到这一点,是因为在编译时,ASP实际上会根据它拥有的内容来转换你给出的ID。

实际上你必须确保在运行任何JS方法之前加载DOM。 因此,请确保您的js文件包含在DOM(html)的末尾。

由于btnRefresh按钮是服务器控件,因此需要通过clientID引用它在Refresh方法中,

 var btn= document.getElementById('<%=btnRefresh.ClientID=%>'); 

但是您的代码没有显示您如何调用Refresh方法。 所以我希望以上可以帮到你。 或者您需要显示更多代码。

    Interesting Posts