有关__dopostback函数的用法

__doPostBack是最简单的使用方法是:

__doPostBack可以实现客户端控件调用服务器端控件的响应,
__doPostBack方法的格式为: __doPostBack(eventTarget,eventArgument)
  参数:  eventTarget:是要触发的服务器控件的客户端ID
        eventArgument:参数

这个两个值在后台可以通过下边方法得到:
Request["__EVENTTARGET"] :获取得到引发页面PostBack的控件ID
Request["__EVENTARGUMENT"]: 获取参数。
1、在页面上划一个能产生 __dopostback函数的控件.(并不是所有的web控件都是用__dopostback产生事件回发),我个人喜欢用linkbutton,然后把text属性设为空值,如果隐藏控件的话,那么__dopostback函数不会产生.

2、然后在你想要触发postback事件的控件ID,写入到如下函数调用中:
__doPostBack( 'imgMap','' );在这里imgMap是我要回发的控件.

3、现在就可以在如何一个前台事件里调用
__doPostBack( 'imgMap','' );

4、在后台imgMap_Click事件中编写代码就行了


例如:
<a id="MyDataGrid__ctl3_lbtnV1" onClick="return confirm('您真的要确认这条记录吗?');" href="javascript:__doPostBack('MyDataGrid$_ctl3$lbtnV1','')">未收单</a>

这是一个linkbutton按钮的客户端脚本,
javascript:__doPostBack('MyDataGrid$_ctl3$lbtnV1','')
这段代码就是它的事件触发脚本(客户端的),
关键是要了解它的调用方式,__doPostBack('',''),
第一个参数是控件名,第二个是参数,
控件名有个规律是一层一层的将父控件ID用$符号连接起来的。
MyDataGrid是DataGrid的ID,_ctl13是DataGridItem的ID,lbtnV1是这个linkbutton的ID。

你在客户端脚本中可以指定一个方法调用__doPostBack()函数就可以触发服务器控件的事件了,需要注意的是doPostBack前面是两个下划线,

 

 

 

 

补充说明:

了解了__doPostBack函数后,我们可以很容易的利用它非常方便地自己触发自定义的PostBack事件。那上面也说了,大部分的控件都是调用这个方法来引了页面的PostBack,只有两个控件是例外,Button 和 ImageButton,正是因为它们不是通过调用__doPostBack来回发事件,所以通过表单隐含变量__EVENTTARGET和__EVENTARGUMENT是无法获取得到引发PostBack的Button或ImageButton的ID和参数值的,只有通过下面的方式才能得它们的实例,进而判断是哪个控件引发的PostBack的:

CODE2:

foreach (string str in Request.Form)

{

Control c = Page.FindControl(str);

if (c isButton)

{

control = c;

break;

}

}

为什么能通过枚举Request.Form集合的Key值,查找到的回发事件源呢?在这里Button和ImageButton又有一些不同。Button控件引发的PostBack,会将Button本身的ID作为Request.Form的一个Key,它的Value是Button的Text属性值,回传给服务器,这样服务器就可以通过枚举Request.Form的Key值,去查找出控件实例,判断是否为Button控件,进而得到是哪个控件引发的PostBack事件。而ImageButton的不同就在于,它不仅仅是用ImageButton的ID作为Request.Form的Key,它是用ImageButton的ID加上.x和.y,作为Key,在Request.Form添加两上键值对,这两个键值对的值应该是标识ImageButton的图片大小。同样的,了解了这个规律后,我们仍然可以通过一定的方式得到是否是由ImageButton引发的PostBack。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值