我目前的工作在其需要触发一个asp的一个项目:在JavaScript代码做了一系列的事件后,点击按钮事件。
下面请看我的代码:
这是我的按钮,它的Click事件:
<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功能,因为我不会点击摆在首位的按钮。 我需要能够调用btnRefresh_Click
从我的外部JavaScript事件让我的触发,将被解雇更新我的GridView控件。
编辑2:
我试图定义我的btn
使用下面的一行在.aspx页面本身:
为BTN = $( “#”);
我也改变了我的JS代码如下:
函数刷新(){如果(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
。
<asp:Button ID="btnRefresh" ClientIDMode="Static" name="btnRefresh" runat="server" Text="btnRefresh" onclick="btnRefresh_Click" />
下面是一个“黑客”我已经在过去使用
该按钮是可见的客户端会
<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();
}
根据您正在使用的ID将改变其ASP的版本,所以一定要检查按钮的实际ID,这样就可以通过JS触发它。 我提到这一点,因为在编译时ASP实际上会改变你已经过基于什么样的父母它给出的ID。
事实上,你必须确保你运行任何JS方法之前DOM被加载。 因此,请确保您的js文件包含在你的DOM(HTML)的结束。
由于btnRefresh
按钮服务器控件,您需要通过参考其clientID
在Refresh
方法,
var btn= document.getElementById(‘<%=btnRefresh.ClientID=%>’);
但是你的代码并不显示你如何调用Refresh
方法。 所以,我希望上面的帮助你。 或者你需要表现出更多的代码。