__doPostBack是通过__EVENTTARGET与__EVENTARGUMENT
__EVENTTARGET是目标控件
__EVENTTARGUMENT是给传参数
此事件对于使用Visble的控件无效,但可以使用Style="Display:none"来实现隐藏
如在母版页的子页面进行__doPostBack时需要使用如下操作:
var obj = document.getElementById("<%= btnRefresh.ClientID%>");
__doPostBack(obj.name, '');
转载原址如下: http://www.cnblogs.com/ttc/archive/2011/03/25/1995651.html
一、 在后台判断哪个按钮点击了。
前台代码:
<button type="button" id="Button1" οnclick="<strong><span style="color:#3333FF;">__doPostBack('btnReturn','1')</span></strong>">查询</button>
注意 onclick ="__doPostBack('btnReturn','1')"
第一个参数表示按钮ID,第二参数随便写的,为的就是在后台确定按钮是否被点击了。
后台代码:
string controlName = Request.Params.Get( "__EVENTTARGET" );
string eventArgument = Request.Params.Get( "__EVENTARGUMENT" );
// 确定按钮事件
if( controlName == "btnConfirm" && eventArgument == "2" )
{
btnConfirm_Click( sender, e );
}
// 查询按钮事件
if( controlName == "btnReturn" && eventArgument == "1" )
{
btnReturn_Click( sender, e );
}
二、应用二,利用eventArgument 向后台传递参数。
前台JS代码:
__doPostBack('btnDelete',delStr);
delStr就是向后台传递的一个字符串。
后台代码:
string eventArgument = Request.Params.Get( "__EVENTARGUMENT" );
string[] delStr = eventArgument.Split( ',' );
下面演示下如何调用后台事件:
1.新建工程
2.拖入一个服务端Button1,一个DropDownList1和一个客户端Button
3.设置DropDownList1的AutoPostBack属性为True,Button1的Visible为False
4.双击Button1,在事件里写下Response.Write("hello:" );
5.页面的HTML里找到客户端Button,写入οnclick="__doPostBack('Button1','')"
6.编译,运行,点击Button是不是出现了"Hello"
7.查看源代码,发现里面多了下面行
<script language="javascript">
<!--
function __doPostBack(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
theform = document.forms["Form1"];
}
else {
theform = document.Form1;
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
// -->
</script>
<input type="hidden" value="" />
<input type="hidden" value="" />
细 心的人会发现,在__doPostBack里,提交调用的是theform.submit(),这样就导致对Form的onsubmit事件校验失效了,
幸好这个问题在asp.net 2.0已经修复了。这里提供一个替换的解决办法,在Form的最下面插入下面的代码,这段代码在保证不管是不是render出来的页面均有效
<script language="javascript">
function __doPostBack_Ex(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
theform = document.forms[0];
}
else {
theform = document.forms[0];
}
if (!theform.__EVENTTARGET) {
theform.appendChild(document.createElement("<input type='hidden' name='__EVENTTARGET'>"));
}
if (!theform.__EVENTARGUMENT) {
theform.appendChild(document.createElement("<input type='hidden' name='__EVENTARGUMENT'>"));
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
if ((typeof (theform.onsubmit) == "function")) {
if (theform.onsubmit() != false) {
theform.submit();
}
}
else {
theform.submit();
}
function __doPostBack(eventTarget, eventArgument) {
__doPostBack_Ex(eventTarget, eventArgument);
}
}
</script>
其它链接: http://www.cnblogs.com/hjf1223/archive/2006/07/05/443761.html此链接有源码下载
链接地址:
http://itworktor.blog.163.com/blog/static/175203029201103071652517/