你的位置:首页 > ASP.net教程

[ASP.net教程]dev_gridControl_CheckBox列,全选和全不选功能的实现


 

关于一只菜鸟的第一篇博客、请大家多多指教!给予指导和意见!

无图无真相,效果图如下:

为了实现在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;      }    }

 

 

 

这样就实现了咱们想要图中的效果!

请多多指教!