使用 javascript 触发 asp:button click 事件



我目前正在处理一个项目,该项目需要在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();

有人可以指出我一个好方法吗?谢谢!

编辑:

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

编辑2:

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

var btn = $("#");

我还更改了我的 JS 代码,如下所示:

函数刷新() { 如果 (BTN) { btn.click(); } 否则 { 警报("假"); } }

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

由于您引用了 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%>');
}

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

<asp:Button ID="btnRefresh" ClientIDMode="Static" name="btnRefresh" runat="server" Text="btnRefresh" onclick="btnRefresh_Click" />

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

看看ClientID属性。

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

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

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

这是我过去使用的"黑客">

客户端可见的按钮将是

<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按钮是服务器控件,因此需要通过clientIDRefresh方法中引用它,

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

但是您的代码不会显示您如何调用Refresh方法。所以我希望上面能帮助你。或者您需要显示更多代码。

相关内容

  • 没有找到相关文章

最新更新