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

    在Asp.Net 2.0中新增的控件GridView可能是我们使用最普通的控件了,其用来显示数据的能力的确好用。GirdView内置有新增,修改,删除功能,结合ObjectDataSource控件,可以生成很好的三层体系的程序。但美中不足的就是其只支持单数据的操作,对于新增和修改而言倒还可以,但对于删除就不够了。我们往往希望能先选中我们要删除的记录,然后一次性删除,不仅方便而且提高了效率。
    为此,我们需要有能实现“全选/全不选”的CheckBox控件来配合GridView控件,以达到我们要实现的目的。
    “全选/全不选”的CheckBox控件程序代码如下:
 1 using System;
 2 using System.Collections.Specialized;
 3 using System.Web;
 4 using System.Web.UI;
 5 using System.Web.UI.WebControls;
 6
 7 namespace HughLin.Web.UI.WebControls
 8 {
 9      // / <summary>
10      // / 可全选/全不选复选框控件
11      // / </summary>
12     public class CheckBox : System.Web.UI.WebControls.CheckBox
13     {
14         public CheckBox()
15         {
16         }
17
18          // / <summary>
19          // / 获取或设置被绑定的数据
20          // / </summary>
21         public string BindedValue
22         {
23             get
24             {
25                 object obj1  =   this .ViewState[ " BindedValue " ];
26                  return  (obj1  ==   null ?  string.Empty : (string)obj1;
27             }
28             set
29             {
30                  if  ( ! string.IsNullOrEmpty(value))
31                 {
32                      this .ViewState[ " BindedValue " =  value;
33                 }
34             }
35         }
36
37          // / <summary>
38          // / 获取或设置控件所在的组名称
39          // / </summary>
40         public string Group
41         {
42             get
43             {
44                 object obj1  =   this .ViewState[ " Group " ];
45                  return  (obj1  ==   null ?  string.Empty : (string)obj1;
46             }
47             set
48             {
49                  this .ViewState[ " Group " =  value;
50             }
51         }
52
53          // / <summary>
54          // / 获取或设置一个值,该值标识控件是否为父级别
55          // / </summary>
56         public bool IsParent
57         {
58             get
59             {
60                 object obj1  =   this .ViewState[ " IsParent " ];
61                  return  (obj1  ==   null ?   false  : (bool)obj1;
62             }
63             set
64             {
65                  this .ViewState[ " IsParent " =  value;
66             }
67         }
68
69         protected override  void  OnPreRender(EventArgs e)
70         {
71              if  ( this .Visible  &&   this .Enabled  &&   ! string.IsNullOrEmpty( this .Group))
72             {
73                  if  ( ! this .Page.ClientScript.IsClientScriptIncludeRegistered( typeof (CheckBox),  " HughLin.CheckBox.js " ))
74                 {
75                      this .Page.ClientScript.RegisterClientScriptResource( typeof (CheckBox),  " HughLin.CheckBox.js " );
76                 }
77                 string text1  =   " document.getElementById(\ ""  + this.ClientID +  " \ " ) " ;
78                  this .Page.ClientScript.RegisterArrayDeclaration( this .Group, text1);
79             }
80             base.OnPreRender(e);
81         }
82
83         protected override  void  Render(HtmlTextWriter writer)
84         {
85              if  ( this .Enabled  &&   this .Visible  &&   ! string.IsNullOrEmpty( this .Group))
86             {
87                  if  ( ! string.IsNullOrEmpty( this .BindedValue))
88                 {
89                     writer.AddAttribute( " value " this .BindedValue);
90                 }
91                 writer.AddAttribute( " isparent " this .IsParent.ToString());
92                 writer.AddAttribute(HtmlTextWriterAttribute.Onclick,  " javascript:AspNetV2_Check(this, ' "   +   this .Group  +   " '); " );
93             }
94             base.Render(writer);
95         }
96     }
97 }

    CheckBox.js文件代码如下:
  1 function  AspNetV2_Check(item, group)
  2 {
  3      var  itemIsParent  =  (item.isparent.toLowerCase()  ==   " true " ?   true  :  false ;
  4      var  itemChecked  =  item.checked;
  5      var  objArray;
  6      try
  7     {
  8         objArray  =  eval(group);
  9     }
 10      catch  (e)
 11     {
 12          return ;
 13     }
 14      if  (objArray  ==   null   ||  objArray.length  ==   0 )
 15     {
 16          return ;
 17     }
 18      if  (itemIsParent)
 19     {
 20         AspNetV2_CheckAll(objArray, itemChecked);
 21     }
 22      else
 23     {
 24         AspNetV2_CheckIt(objArray, itemChecked);
 25     }
 26 }
 27
 28 function  AspNetV2_CheckIt(newArray, itemChecked)
 29 {
 30      if  ( ! itemChecked)
 31     {
 32          for  ( var  i  =   0 ; i  <  newArray.length; i ++ )
 33         {
 34              var  e  =  newArray[i];
 35              var  isParent  =  (e.isparent.toLowerCase()  ==   " true " ?   true  :  false ;
 36              if  (isParent)
 37             {
 38                 e.checked  =   false ;
 39             }
 40         }
 41     }
 42      else
 43     {
 44          var  objAll;
 45          var  allChecked  =   0 ;
 46          for  ( var  i  =   0 ; i  <  newArray.length; i ++ )
 47         {
 48              var  e  =  newArray[i];
 49              var  isParent  =  (e.isparent.toLowerCase()  ==   " true " ?   true  :  false ;
 50              if  (e.checked  &&   ! isParent)
 51             {
 52                 allChecked ++ ;
 53             }
 54              else   if  (isParent)
 55             {
 56                 objAll  =  e;
 57             }
 58         }
 59          if  (allChecked  ==  newArray.length  -   1 )
 60         {
 61             objAll.checked  =   true ;
 62         }
 63     }
 64 }
 65
 66 function  AspNetV2_CheckAll(newArray, itemChecked)
 67 {
 68      for  ( var  i  =   0 ; i  <  newArray.length; i ++ )
 69     {
 70          var  e  =  newArray[i];
 71          var  isParent  =  (e.isparent.toLowerCase()  ==   " true " ?   true  :  false ;
 72          if  ( ! isParent)
 73         {
 74              if  (e.checked  !=  itemChecked)
 75             {
 76                 e.checked  =  itemChecked;
 77             }
 78         }
 79     }
 80 }
 81
 82 function  AspNetV2_CheckHasData(group)
 83 {
 84      var  objArray;
 85      var  hasData  =   false ;
 86      try
 87     {
 88         objArray  =  eval(group);
 89     }
 90      catch  (e)
 91     {
 92          return  hasData;
 93     }
 94      if  (objArray  ==   null   ||  objArray.length  ==   0 )
 95     {
 96          return  hasData;
 97     }
 98      for  ( var  i  =   0 ; i  <  objArray.length; i ++ )
 99     {
100          var  e  =  objArray[i];
101          if  (e.checked)
102         {
103             hasData 

你可能感兴趣的:(JavaScript,UI,Web,asp.net,asp)