我目前正在处理一个项目,该项目需要在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
按钮是服务器控件,因此需要通过clientID
在Refresh
方法中引用它,
var btn= document.getElementById(‘<%=btnRefresh.ClientID=%>’);
但是您的代码不会显示您如何调用Refresh
方法。所以我希望上面能帮助你。或者您需要显示更多代码。