有的時候想在客戶端觸發服務器端控件的click事件
咱們這麼寫__doPostBack('id','')
可是爲何有的時候會失效?
由於__doPostBack()函數並無在頁面產生
(若是沒有相似linkbutton等控件的話asp.net引擎不產生這段js,此緣由一) 該Linkbutton不能爲visible服務器
若是頁面有能夠不隱藏的Linkbutton,此問題就解決了asp.net
但若是沒有:
解決方法以下:
好比前臺頁面 <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
(1)方法一:若是是有單擊link觸發:<a href="#" onclick="document.getElementById('Button1').click()">觸發服務器端按鈕事件</a>
(2)方法二:<利用GetPostBackEventReference給客戶端生成__doPostBack()
前臺 :<a href="#" onclick="<%=PostBack()%>">觸發服務器端按鈕事件</a>
後臺 :protected string PostBack()
{ 函數
return this.Page.GetPostBackEventReference(this.Button1,"haha");
}
this
經過__EVENTARGUMENT="haha"能夠判斷是否是點了那個連接的PostBack
把Button1的按鈕事件這麼寫:
if(Request["__EVENTARGUMENT" ]=="haha")
{
Response.Write("這個是連接的PostBack");
}
else
{
Response.Write("這個不是連接的PostBack");
} .net