关于一只菜鸟的第一篇博客、请大家多多指教!给予指导和意见!
无图无真相,效果图如下:
为了实现在gridcontrol插入一列checkbox,并通过表头的checkbox实现全部选中以及全部不选的效果;
我参考了很多博客,终于用清爽的代码提炼出了我想要的清晰效果;
1. 表头的实现:
用了一个数据模板实现表头文字和checkbox的组合:
Code呈上:
<dxg:GridControl.Columns> <dxg:GridColumn FieldName="全选"> <dxg:GridColumn.HeaderTemplate> <DataTemplate> <CheckBox IsChecked="False" Name="SelectAll" Checked="SelectAll_Checked" Unchecked="SelectAll_Unchecked" Content="全选"></CheckBox> </DataTemplate> </dxg:GridColumn.HeaderTemplate> </dxg:GridColumn> </dxg:GridControl.Columns>
2、gridcontrol 的数据源的SQL数据库中的一个表,并设置一个名为【check】bit类型的字段, 将这个字段绑定上面设置的模板 "全选" 这一列;
SQL语句如下:
DataSet ds = DataUtils.DB.GetDataSetFromSQL("select [ID],[check]全选,[Solution_Name]解决方案,[LASTMODIFYUSER]修改人员,[LASTMODIFYTIME]修改时间 from SL_Device_Register_SolutionFlow") gridControl4.ItemsSource=ds.Tables[0];
3、全选和全不选的实现事件:
(通过表头的:Checked="SelectAll_Checked" Unchecked="SelectAll_Unchecked" 两个事件):
实现的思想就是遍历gridcontrol中的每一个checkbox行;
Code如下:
private void SelectAll_Checked(object sender, RoutedEventArgs e) { DataTable dt =(DataTable)gridControl6.ItemsSource; int rowsCount = dt.Rows.Count; for (int i = 0; i < rowsCount;i++ ) { string value=dt.Rows[i]["全选"].ToString(); value = "True"; dt.Rows[i]["全选"] = value; } } private void SelectAll_Unchecked(object sender, RoutedEventArgs e) { DataTable dt = (DataTable)gridControl6.ItemsSource; int rowsCount = dt.Rows.Count; for (int i = 0; i < rowsCount; i++) { string value = dt.Rows[i]["全选"].ToString(); value = "false"; dt.Rows[i]["全选"] = value; } }
这样就实现了咱们想要图中的效果!
请多多指教!