[英]Trigger an asp:button click event using javascript
我目前正在开发一个项目,该项目需要在JavaScript代码中执行一系列事件后才能触发asp:button点击事件。
请在下面查看我的代码:
这是我的按钮,它是单击事件:
<asp:Button ID="btnRefresh" name="btnRefresh" runat="server" Text="btnRefresh" onclick="btnRefresh_Click" />
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代码,如下所示:
函数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
在同一页面上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
。
<asp:Button ID="btnRefresh" ClientIDMode="Static" name="btnRefresh" runat="server" Text="btnRefresh" onclick="btnRefresh_Click" />
这是我过去使用的“ hack”
客户端可见的按钮是
<input type="button" id="btPart1" value="Trigger Phase 1"
onclick="clicked()" class="btn btn-default" />
定义在Web表单如按钮
<asp:button id="Triggered" runat="server" OnClick="btnRefresh_Click"
Style="visibility: hidden;"/>
在您的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
方法。 所以我希望以上对您有所帮助。 或者,您需要显示更多代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.