我目前正在开发一个项目,需要在javascript代码中执行一系列事件后触发asp:按钮点击事件。
请参阅下面的代码:
这是我的按钮,它是点击事件:
<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代码如下:
function Refresh(){ if(btn){ btn.click(); } 其他{ 警报( '假'); }}
js能够看到btn
并且该事件通过了btn.click()
行
但是,我的btnRefresh_Click
仍未启动。我在这里错过了什么吗?
答案 0 :(得分:0)
在这里,您可以使用OnClientClick属性并提及要在外部js中调用的函数名称,因为此属性实际在执行服务器端事件之前执行。
答案 1 :(得分:0)
查看ClientID
财产。
您可以使用该属性获取客户端按钮的ID,并使用该ID触发点击。
function Refresh() {
var btn = $("#<%=btnRefresh.ClientID%>");
if (btn) {
btn.click();
}
else {
alert('false');
}
}
但请注意<%=btnRefresh.ClientID%>
只能在与btnRefresh
相同的页面上工作,而不能在外部JS文件中工作。 ClientID由ASP.NET动态生成。
答案 2 :(得分:0)
由于您引用了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" />
答案 3 :(得分:0)
这是一个&#39; hack&#39;我过去曾用过
客户端可见的按钮是
<input type="button" id="btPart1" value="Trigger Phase 1"
onclick="clicked()" class="btn btn-default" />
在网络表单中定义这样的按钮
<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。
答案 4 :(得分:0)
实际上,在运行任何JS方法之前,必须确保已加载DOM。因此,请确保您的js文件包含在DOM(html)的末尾。
由于btnRefresh
按钮是服务器控件,因此您需要clientID
在Refresh
方法中引用
var btn= document.getElementById(‘<%=btnRefresh.ClientID=%>’);
但是您的代码没有显示您如何调用Refresh
方法。所以我希望上面可以帮到你。或者您需要显示更多代码。