最初的界面图如图1-1(全选框ID: cb_checkall DEV控件名称:gcCon ):
要实现的功能如下图(1-2 1-3 1-4)及代码所示:
图1-2
图1-3
图1-4
O(∩_∩)O哈哈~
不要着急哦,看清要实现的功能后我们来上代码啦!!
1 //全局变量 0:表格中的数据没有全部选中 1:表格中的数据全部选中 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) 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 }