__doPostBack学习笔记

对于服务器端的控件,一切都是靠submit来实现提交服务器的操作的,
对于无法象button控件那样可以自己产生提交操作的控件,比如LinkButton等,
都是通过_doPostBack(ControlId)来实现提交的。
ASP.NET会自动为页面生成下面的脚本:

代码
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
function __doPostBack(eventTarget, eventArgument) {
if(!theForm.onsubmit (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}

__doPostBack带有两个参数:eventTarget和eventArgument。
eventTarget是引起回送的控件的ID,eventArgument是回调参数(与控件相关的附加数据)。这两个参数分别由隐藏的两个表单域__ EVENTTARGET和__ EVENTARGUMENT保存。
使用这两个隐藏的表单可以查找引起页面回送的控件ID和回送时的参数.

防止ASP.NET页面重复提交的一个方法如下:

Page_Load :Page.GetPostBackClientEvent(serverControl, "");

代码
<form id="form1" runat="server">
<div>
<asp:Button ID="btntest" runat="server" Text="test" OnClick="btntest_Click" />
</div>
</form>
<script>
function DisableButton(b) {
b.disabled
= true;
b.value
= '正在提交,请稍侯....';
__doPostBack(b.id,
'');
}
</script>

 



posted on 2010-06-26 13:24  tneduts  阅读(242)  评论(1编辑  收藏  举报

导航