实现GridView控件的删除多条记录功能系列(3)

    本篇将讲述如何解决GridView控件中使用CheckBox控件无法保存状态问题。由于我们开发的CheckBox控件在GridView控件的外部使用时可以保存状态,所以我的解决方案是:另外开发一个控件,用来保存在GridView控件中的CheckBox控件的状态。我将其命名为CheckBoxHidden控件。控件代码如下:
 1 using  System;
 2 using  System.Web.UI;
 3 using  System.Web.UI.WebControls;
 4
 5 namespace  HughLin.Web.UI.WebControls
 6 {
 7    public class CheckBoxHidden : System.Web.UI.WebControls.HiddenField
 8    {
 9        /**//// <summary>
10        /// 获取或设置控件所在的组名称
11        /// </summary>
12        public string Group
13        {
14            get
15            {
16                object obj1 = this.ViewState["Group"];
17                return (obj1 == null? string.Empty : (string)obj1;
18            }
19            set
20            {
21                this.ViewState["Group"= value;
22            }
23        }
24
25        protected override void OnPreRender(EventArgs e)
26        {
27            if (this.Visible && !string.IsNullOrEmpty(this.Group))
28            {
29                if (!this.Page.ClientScript.IsClientScriptIncludeRegistered(typeof(CheckBox), "HughLin.CheckBox.js"))
30                {
31                    this.Page.ClientScript.RegisterClientScriptResource(typeof(CheckBox), "HughLin.CheckBox.js");
32                }
33                if (!this.Page.ClientScript.IsOnSubmitStatementRegistered(typeof(CheckBox), "HughLin.CheckBox.js"))
34                {
35                    this.Page.ClientScript.RegisterOnSubmitStatement(typeof(CheckBox), "HughLin.CheckBox.js""AspNetV2_SaveCheckBoxGroupValue('" + this.Group + "', '" + this.ClientID + "')");
36                }
37                if (!this.Page.ClientScript.IsStartupScriptRegistered(typeof(CheckBox), "HughLin.CheckBox.js"))
38                {
39                    this.Page.ClientScript.RegisterStartupScript(typeof(CheckBox), "HughLin.CheckBox.js""\r\n<script language='javascript'>\nAspNetV2_RestoreCheckBoxGroupValue('" + this.Group + "', '" + this.ClientID + "');\n</script>\n");
40                }
41            }
42            base.OnPreRender(e);
43        }
44    }
45}
    同时,应修改第一篇的CheckBox.js文件,增加如下两个函数:
 1 function  AspNetV2_RestoreCheckBoxGroupValue(group, clientId)
 2 {
 3      var  objArray;
 4      try
 5     {
 6         objArray  =  eval(group);
 7     }
 8      catch  (e)
 9     {
10          return ;
11     }
12      if  (objArray  ==   null   ||  objArray.length  ==   0 )
13     {
14          return ;
15     }
16      var  flag  =   false ;
17      var  objArray2  =  document.getElementById(clientId);
18      if  (objArray2  ==   null   ||  objArray2.value.length  ==   0 )
19     {
20         flag  =   true ;
21     }
22      if  (flag)
23     {
24          for  ( var  i  =   0 ; i  <  objArray.length; i ++ )
25         {
26              var  e  =  objArray[i];
27             e.checked  =   false ;
28         }
29     }
30      else
31     {
32          var  objArray3  =  objArray2.value.split( " , " );
33          for  ( var  i  =   0 ; i  <  objArray.length; i ++ )
34         {
35              var  e  =  objArray[i];
36              var  flag1  =  (objArray3[i].toLowerCase()  ==   " true " ?   true  :  false ;
37             e.checked  =  flag1;
38         }
39     }
40 }
41
42 function  AspNetV2_SaveCheckBoxGroupValue(group, clientId)
43 {
44      var  objArray;
45      try
46     {
47         objArray  =  eval(group);
48     }
49      catch  (e)
50     {
51          return ;
52     }
53      if  (objArray  ==   null   ||  objArray.length  ==   0 )
54     {
55          return ;
56     }
57      var  objValues  =  objArray[ 0 ].checked;
58      for  ( var  i  =   1 ; i  <  objArray.length; i ++ )
59     {
60          var  e  =  objArray[i];
61         objValues  +=   " , "   +  objArray[i].checked;
62     }
63     document.getElementById(clientId).value  =  objValues;
64 }

    同样我们将其编译到HughLin.dll中。
    使用是我们只需要在第二篇中的代码中加入:
    <hlAsp:CheckBoxHidden ID="CheckBoxHidden1" runat="server" Group="UserCheckBoxGroup1" />
    注意:Group应当和你的CheckBox控件的Group要相同。

    本系列中开发的CheckBox控件有一个好处就是:可以同时在多个GridView中使用,而互相不会干扰,只需设置Group的值不同即可。当然要保存多个GridView的CheckBox控件的状态,必须添加相应的ChekBoxHidden控件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值