zoukankan      html  css  js  c++  java
  • 给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 }
  • 相关阅读:
    mysql基础知识
    django知识
    gitlab的CICD搭建记录
    nginx的基础知识
    JAVA基础知识总结——part1
    【Python】python基础练习题_1
    【Docker】——Linux下搭建docker环境
    day3
    python_day2
    python_day1
  • 原文地址:https://www.cnblogs.com/AlbertSmith/p/11896761.html
Copyright © 2011-2022 走看看