网上一般说:__doPostBack('Button1','')就可以了,但有一个问题,运行时总是提示“缺少对象”(脚本错误)。
原因:“NET 生成javascript的 __doPostBack()函数是有条件的,当页面上存在一个或一个以上的LINKBUTTON的时候才会有这个函数,所以,如果页面上没有LINKBUTTON 只有BUTTON的时候会出现‘缺少对象’的JS错误提示”
为此我写了第三种调用方法
<form id="form1" runat="server">
<div>
<%--
第一种方法添加LinkButton
<asp:LinkButton ID="linkButton" runat="server"></asp:LinkButton>
<asp:TextBox ID="textBox" runat="server"></asp:TextBox>
<asp:Button ID="button" runat="server" Text="JsInvokeButton" OnClick="button_Click" />
--%>
</div>
<div>
<%--
第二种方法直接使用getElementById
<asp:TextBox ID="textBox1" runat="server"></asp:TextBox>
<asp:Button ID="button1" runat="server" Text="JsInvokeButton2" OnClick="button1_Click" />
--%>
</div>
<div>
<%--
第三种方法使用GetPostBackEventReference
<asp:TextBox ID="textBox2" runat="server"></asp:TextBox>
<asp:Button ID="button2" runat="server" Text="JsInvokeButton3" OnClick="button2_Click" />
--%>
</div>
</form>
protected void Page_Load(object sender, EventArgs e)
{
//第一种方法
textBox.Attributes.Add("onclick", "javascript:__doPostBack('button','')");
//第二种方法
textBox1.Attributes.Add("onclick", "document.getElementById('button1').click()");
//第三种方法
textBox2.Attributes.Add("onclick", "javascript:__doPostBack('button2','')");
ClientScript.GetPostBackEventReference(textBox2,"");
}
protected void button_Click(object sender, EventArgs e)
{
}
protected void button1_Click(object sender, EventArgs e)
{
}
protected void button2_Click(object sender, EventArgs e)
{
}