回车,根据编码获取相应记录,然后再将这录绑定到AutoList

 问题描述:

            回车后,根据编码获取相应记录,然后再将这录绑定到AutoList(我们自定义控件,其实就是下拉列表),回车事件是用jquery ajax实现,这样在后台给AutoList绑定数据源,如果不刷新页面发现AutoList数据源没绑定上去。

问题分析:

  AutoList必须要回发才可以将新的数据源绑定上去。而ajax是不会回发的。  

  

解决方法:手工调用__doPostBack

一、js

回车是用jquery ajax实现:

    //获取公司名称
         $(function() {
             $("input[id$='E_1_1_DOMAINID']").keydown(function(e) {
                 if (e.keyCode == 13 || e.keyCode == 9) {                  
                     __doPostBack("E_1_1_DOMAINID", $("input[id$='E_1_1_DOMAINID']").val());
                 }
             });

         });
View Code

  

二、后台页面

 

protected void Page_Load(object sender, EventArgs e)
 {
         ///如果页面没有自动生成__doPostBack() ,那么请利用GetPostBackEventReference给客户端生成__doPostBack() 
        ////如果报“__doPostBack”的值为 null,那就是说明要手工调用这个方法
        this.Page.GetPostBackEventReference(this, "");

        /// 当提交的隐含变量__EVENTTARGET为E_1_1_DOMAINID时,执行代码:

    if (this.Page.Request["__EVENTTARGET"] == "E_1_1_DOMAINID")
        {

    ///绑定你的数据源
            alst_CustomCode.ReBindValue(" DOMAINID='" + E_1_1_DOMAINID.Text + "'");
        }
 }

后台页面代码
后台代码

__doPostBack 说明

  __doPostBack带有两个参数,eventTarget是标识将要引发页面PostBack的控件ID,eventArgument参数提供了在引发页面PostBack事件时所带的额外参数。当然这个函数被函数时,这两个参数的值将赋值给页面的两个隐含变量__EVENTTARGET和__EVENTARGUMENT,然后调用页面的submit方法提交页面表单。这就是为什么我们可以通过Request.Form[“__EVENTTARGET”]获取得到引发页面PostBack的控件ID的原因

  大部分的控件都是调用这个方法来引了页面的PostBack,只有两个控件是例外,Button 和 ImageButton,正是因为它们不是通过调用__doPostBack来回发事件,所以通过表单隐含变量__EVENTTARGET和__EVENTARGUMENT是无法获取得到引发PostBack的Button或ImageButton的ID和参数值的,只有通过下面的方式才能得它们的实例,进而判断是哪个控件引发的PostBack

foreach (string str in Request.Form) 

    { 

    Control c = Page.FindControl(str); 

if (c is Button) 

{ 

control = c; 

break; 

} 

} 
View Code

 

 

posted @ 2013-12-06 15:11  丁焕轩  阅读(575)  评论(0编辑  收藏  举报