最初的界面图如图1-1(全选框ID: cb_checkall DEV控件名称:gcCon ):
要实现的功能如下图(1-2 1-3 1-4)及代码所示:
图1-2
图1-3
图1-4
O(∩_∩)O哈哈~
不要着急哦,看清要实现的功能后我们来上代码啦!!
1 //全局变量 0:表格中的数据没有全部选中 1:表格中的数据全部选中表格中复选框的CheckedChanged事件
2 public int iCheckAll=0;
3 private void repositoryItemCheckEdit1_CheckedChanged(object sender, EventArgs e)
4 {
5 CheckEdit chkCheck = (sender as CheckEdit);
6 DataRow dr = gridView1.GetFocusedDataRow();
7 if (chkCheck.CheckState == CheckState.Checked)
8 {
9 dr["IS_CHECK"] = "1";
10 }
11 else
12 {
13 dr["IS_CHECK"] = "0";
14
15 }
16
17 //增加全部选择时,全选按钮应该勾选上
18 DataTable dt = gcCon.DataSource as DataTable;
19
20 //判断如果GridView中按钮都全选了,把全选按钮也设置为选中状态
21 DataRow[] drTemp = dt.Select("IS_CHECK=0 OR IS_CHECK IS NULL");
22 if (drTemp.Length > 0)
23 {
24 //没有全部选中
25 iCheckAll = 0;
26 cb_checkall.CheckState = CheckState.Unchecked;
27 }
28 else
29 {
30 iCheckAll = 1;
31 cb_checkall.CheckState = CheckState.Checked;
32 }
33
34
35
36 }
1 private void cb_checkall_CheckedChanged(object sender, EventArgs e)全选框的CheckedChanged事件
2 {
3
4 DataTable dt = gcCon.DataSource as DataTable;
5
6 //优化 增加判断dt为null的条件
7 if (dt != null)
8 {
9 if (cb_checkall.Checked == true)
10 {
11 foreach (DataRow item in dt.Rows)
12 {
13 item["IS_CHECK"] = "1";
14 }
15 iCheckAll = 1;
16 }
17 else
18 {
19 if (iCheckAll == 0)
20 {
21 //表格中的数据没有全部选中时 设置全选框的的状态为FALSE (觉得这个条件可以不要,可以试下哦O(∩_∩)O哈哈~)
22 DataRow[] drMM = dt.Select("IS_CHECK=0 OR IS_CHECK IS NULL");
23 if (drMM.Length > 0)
24 {
25 cb_checkall.Checked = false;
26 }
27 }
28 else if (iCheckAll==1)
29 {
30
31 //表格中的数据是全选中状态时,取消全选时,设置表格中的标识为不选中的状态
32 foreach (DataRow item in dt.Rows)
33 {
34 item["IS_CHECK"] = "0";
35 }
36 }
37
38
39 }
40
41 }
42 else
43 {
44 //判断条件
45 MessageBox.Show("没有可供选择的数据", "提示!");
46 cb_checkall.Checked = false;
47 }
48
49 }