關於一只菜鳥的第一篇博客、請大家多多指教!給予指導和意見!
無圖無真相,效果圖如下:

為了實現在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;
}
}
這樣就實現了咱們想要圖中的效果!
請多多指教!
