给GridView添加列头复选框

 1 using DevExpress.XtraEditors.Drawing;
 2 using DevExpress.XtraEditors.Repository;
 3 using DevExpress.XtraEditors.ViewInfo;
 4 using DevExpress.XtraGrid.Views.Grid;
 5 using System;
 6 using System.Collections.Generic;
 7 using System.Drawing;
 8 using System.Linq;
 9 using System.Text;
10
11     public static class Draw
12     {
13         /// <summary>
14         /// 为列头绘制CheckBox
15         /// </summary>
16         /// <param name="view">GridView</param>
17         /// <param name="checkItem">RepositoryItemCheckEdit</param>
18         /// <param name="fieldName">需要绘制Checkbox的列名</param>
19         /// <param name="e">ColumnHeaderCustomDrawEventArgs</param>
20         public static void DrawHeaderCheckBox(this GridView view, RepositoryItemCheckEdit checkItem, string fieldName, ColumnHeaderCustomDrawEventArgs e)
21         {
22             /*说明:
23              *参考:https://www.devexpress.com/Support/Center/Question/Details/Q354489
24              *在CustomDrawColumnHeader中使用
25              *eg:
26              * private void gvCabChDetail_CustomDrawColumnHeader(object sender, DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e)
27              * {
28              * GridView _view = sender as GridView;
29              * _view.DrawHeaderCheckBox(CheckItem, "Check", e);
30              * }
31              */
32             if (e.Column != null && e.Column.FieldName.Equals(fieldName))
33             {
34                 e.Info.InnerElements.Clear();
35                 e.Painter.DrawObject(e.Info);
36                 DrawCheckBox(checkItem, e.Graphics, e.Bounds, getCheckedCount(view, fieldName) == view.DataRowCount);
37                 e.Handled = true;
38             }
39         }
40         private static void DrawCheckBox(RepositoryItemCheckEdit checkItem, Graphics g, Rectangle r, bool Checked)
41         {
42             CheckEditViewInfo _info;
43             CheckEditPainter _painter;
44             ControlGraphicsInfoArgs _args;
45             _info = checkItem.CreateViewInfo() as CheckEditViewInfo;
46             _painter = checkItem.CreatePainter() as CheckEditPainter;
47             _info.EditValue = Checked;
48
49             _info.Bounds = r;
50             _info.PaintAppearance.ForeColor = Color.Black;
51             _info.CalcViewInfo(g);
52             _args = new ControlGraphicsInfoArgs(_info, new DevExpress.Utils.Drawing.GraphicsCache(g), r);
53             _painter.Draw(_args);
54             _args.Cache.Dispose();
55         }
56         private static int getCheckedCount(GridView view, string filedName)
57         {
58             int count = 0;
59             for (int i = 0; i < view.DataRowCount; i++)
60             {
61                 object _cellValue = view.GetRowCellValue(i, view.Columns[filedName]);
62                 if (_cellValue == null) continue;
63                 if (string.IsNullOrEmpty(_cellValue.ToString().Trim())) continue;
64                 bool _checkStatus = false;
65                 if (bool.TryParse(_cellValue.ToString(), out _checkStatus))
66                 {
67                     if (_checkStatus)
68                         count++;
69                 }
70             }
71             return count;
72         }
73 }

使用方法:

1 RepositoryItemCheckEdit CheckItem = new RepositoryItemCheckEdit();
2 const string gcCheckFieldName = "勾选";
3 private void gvLampConfig_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e)
4 {
5   GridView _view = sender as GridView;
6   Draw.DrawHeaderCheckBox(gridView1, CheckItem, gcCheckFieldName, e);
7 }

原文地址:https://www.cnblogs.com/AlbertSmith/p/11896761.html

时间: 2024-10-05 21:14:14

给GridView添加列头复选框的相关文章

GridControl 选择列、复选框全选

说明: GirdControl 中添加一列,这一列不是写在数据库中的,而是代码中添加的. 图示: 底层类代码: #region GridControl 全选 /// <summary> /// 是否选中 /// </summary> private static bool chkState = false; //复选框列名称 private static string chkFileName = ""; //复选框列宽 private static int ch

DevExpress Gridcontrol 表格头复选框 全选全不选

新建窗体 拖一个Gridcontrol 添加两列 col1,col2 public partial class XtraForm2 : DevExpress.XtraEditors.XtraForm { public XtraForm2() { InitializeComponent(); } private void XtraForm2_Load(object sender, EventArgs e) { //设置复选框 gridView1.OptionsSelection.MultiSele

Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置

QtreeView是ui中最常用的控件,Qt中QTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有mvc的特点). 1. QStandardItemModel在QTreeView中的使用 使用QTreeView的对应模型是QStandardItemModel,这个是Qt对应ui界面最有用的模型,它可以用于树形控件.列表控件.表格控件等等和条目有关的控件.QStandardItemModel用于列表

GridControl 选择列、复选框全选(下)

功能:        删除选中行 前台调用: string str=""; GridDelete(gv, "chk", out str); MessageBox.Show(str); 底层类: /// <summary> /// 删除所有选中行 /// </summary> /// <param name="gv">GirdView 名称</param> /// <param name=&qu

可动态添加数据的复选框

变量如下所示: /**   * 原始每行最多显示的个数   */  private static final int INITIAL_MAX_COUNT = 3;  private Context mContext;  /**   * CheckBox 列表   */  private List<CheckBox> mCheckBoxs;  /**   * 每一个CheckBox 显示的内容   */  private List<String> mSelectedBoxConten

DataGridView复选框全选和全不选

今天测试的又提新的要求了,说是我的第一列的复选框不能全选活着全部取消,这样会影响用户的使用效果.测试的提了要求,那就改吧,但是中间还经历了一些小挫折,这里给大家分享一下.哈哈. 因为.net framework自带的Datagridview自身的这个控件是没有咱们平时用的全选全不选的复选框的,他的表头就只有这一列的名称,开始思路走的有点弯了,于是就想画一个得了,于是在晚上找了一篇博客.http://www.cnblogs.com/gossip/archive/2008/11/22/1338868

HTML下拉列表框与复选框的区别

在用HTML创建表单的案例中,下拉列表框与复选框是有区别的,那在写HTML程序时,为了效果美观,我们也要特别注意.比如一般情况下,部门属性中用的是下拉列表框,所以不是在最后一个部门的结尾才加上换行符<br>,是在<select></select>之后,而对于兴趣复选框就可以随意的添加,因为复选框下的属性可以多选,竖着排的话就各位后面都加一个换行符,横着排就最后一个兴趣属性后加就可以了.而且换行符<br>没有closing tag,独立使用,很是方便.HTML

element-ui中el-table(隔行换色,复选框回显)

1.隔行换色 el-table加上改属性,然后操作该方法 之后在添加颜色  2.复选框回显 a:表格数据不是动态加载的情况下,表格会自动选中之前选中的 b:表格数据是动态获取的,需要根据行来进行回显 原理:拿已经存储好的之前选中的数据去匹配表格中某一行的某一个属性,两个数组对象中可以匹配上,表格便会回显成功. 原文地址:https://www.cnblogs.com/yxkNotes/p/11584656.html

DateGridView标题列头添加复选框

第一:添加列标题时,添加两个空格--用于显示复选框: 第二:实现列标题添加复选框,代码如下: private void AddCheckeBoxToDGVHeader(DataGridView dgv) { for (int i = 0; i < this.dgvList.Columns.Count; i++) { System.Windows.Forms.CheckBox ckBox = new System.Windows.Forms.CheckBox(); //ckBox.Text = &qu