PostBack

参考文章:http://www.cnblogs.com/artech/archive/2007/04/06/702658.html

Part 1
在新建页上拖出一个LinkButton控件,运行。在源文件中会出现__doPostBack函数。
对应的LinkButton被转化成HTML的a Tag。
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
如果在aspx.cs中定义了LinkButton的事件,点击此a Tag时事件将会被触发。
另:可以把链接文字去掉,做为隐藏的控件来利用。

Part 2
如果把上述的asp:LinkButton换成asp:Button,运行后在源文件中会找不到__doPostBack函数。
对应的Button被转化成HTML的input Tag。
<input type="submit" name="Button1" value="Button" id="Button1" class="Button1" />
这种默认情况下Button将以submit的方式提交表单。

为asp:Button1加上UseSubmitBehavior="false"属性之后,源文件出现__doPostBack函数。Button被转化成:
<input type="button" name="Button1" value="Button" onclick="javascript:__doPostBack('Button1','')" id="Button1" class="Button1" />
改变其表单提交的行为(type="button"),Button将通过调用javascript的方式(调用__doPostBack函数)提交表单。

Part 3
为Button加上属性后,在客户端可以这样调用服务端事件:
<a href="#" onclick="document.getElementById('Button1').click()">HTML a Tag</a>
<input type="button" name="Button2" id="Button2" value="Button2" onclick="__doPostBack('Button1','')"/>

Part 4:
类似Button2的调用还可以包括参数:
<input type="button" name="Button3" id="Button3" value="Button3" onclick="__doPostBack('Button1','btn3')"/>
在Button1_Click事件中加入:if (Request["__EVENTARGUMENT"] == "btn3") {  //doSomething  },用参数可区分出是哪个按钮触发事件。

Part 5:
联带笔记。多个Button共用一个函数方法:
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="1" OnCommand="MyPostBack">LinkButton</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="2" OnCommand="MyPostBack">LinkButton</asp:LinkButton>
protected void MyPostBack(object sender, CommandEventArgs e)
{
    Response.Write(((LinkButton)sender).ID + e.CommandName);
}

Part 6:
Asp.Net夜话之五:Page类和回调技术
参考文章:http://www.cnblogs.com/xiayang/articles/1428358.html 
aspx:

Code

aspx.cs(page继承ICallbackEventHandler接口):

Code
posted @ 2009-07-29 14:04  DaCHun  阅读(697)  评论(0编辑  收藏  举报