DevExpress实现GridControl同步列头checkbox与列中checkbox状态

本文实例展示了DevExpress实现GridControl同步列头checkbox与列中checkbox状态的方法,有一定的实用价值,具体方法如下:

主要功能代码如下:

/// <summary>
/// 同步列头checkbox与列中checkbox状态
/// </summary>
/// <param name="view">GridView</param>
/// <param name="fieldeName">需要绘制Checkbox的列名</param>
/// <param name="e">MouseEventArgs</param>
public static void SyncCheckStatus(this GridView view, string fieldeName, MouseEventArgs e)
{
  /*说明:
   *在MouseDown事件中使用
   *参考:https://www.devexpress.com/Support/Center/Question/Details/Q354489
   *eg:
   *private void gvLampConfig_MouseDown(object sender, MouseEventArgs e)
   *{
   *GridView _view = sender as GridView;
   *_view.SyncCheckStatus(gcCheckFieldName, e);
   *}
   */
  if (e.Clicks == 1 && e.Button == MouseButtons.Left)
  {
 view.ClearSorting();
 view.PostEditor();
 GridHitInfo _info;
 Point _pt = view.GridControl.PointToClient(Control.MousePosition);
 _info = view.CalcHitInfo(_pt);
 if (_info.InColumn && _info.Column.FieldName.Equals(fieldeName))
 {
   if (getCheckedCount(view, fieldeName) == view.DataRowCount)
 UnChekAll(view, fieldeName);
   else
 CheckAll(view, fieldeName);
 }
  }
}
private static int getCheckedCount(GridView view, string filedName)
{
  int count = 0;
  for (int i = 0; i < view.DataRowCount; i++)
  {
 object _cellValue = view.GetRowCellValue(i, view.Columns[filedName]);
 //if (_cellValue != null && !(_cellValue is DBNull))
 if (_cellValue == null) continue;
 if (string.IsNullOrEmpty(_cellValue.ToString().Trim())) continue;
 bool _checkStatus = false;
 if (bool.TryParse(_cellValue.ToString(), out _checkStatus))
 {
   //if ((bool)_cellValue)
   if (_checkStatus)
 count++;
 }
  }
  return count;
}
private static void CheckAll(GridView view, string fieldName)
{
  for (int i = 0; i < view.DataRowCount; i++)
  {
 view.SetRowCellValue(i, view.Columns[fieldName], true);
  }
}
private static void UnChekAll(GridView view, string fieldName)
{
  for (int i = 0; i < view.DataRowCount; i++)
  {
 view.SetRowCellValue(i, view.Columns[fieldName], false);
  }
}

代码使用方法如下:

private void gvLampConfig_MouseDown(object sender, MouseEventArgs e)
{
  GridView _view = sender as GridView;
  _view.SyncCheckStatus(gcCheckFieldName, e);
}

代码运行效果如下:

(0)

相关推荐

  • DevExpress SplitContainerControl用法总结

    本文实例汇总了DevExpress SplitContainerControl的用法,希望对大家进行C#项目开发能起到一定的帮助作用.具体用法如下: 1.修改成纵向分割: Horizontal = false; 2.设置伸缩箭头: 3.固定某个PANEL大小: 最大化后依然保持着比例: 4.隐藏某个PANEL: splitContainerControl1. PanelVisibility = SplitPanelVisibility.Panel2;

  • DevExpress中GridControl列转义的实现方法

    在一些项目的实际开发过程中,我们有时候需要对GridControl中列值进行转义,譬如1转义成"完成"等等,一般在诸如CustomColumnDisplayText事件中能够轻松完成,为了提高代码复用性,所以需要对CustomColumnDisplayText进行包装.具体方法如下: 主要功能代码如下: /// <summary> /// CustomColumnDisplayText Helper /// </summary> /// <param na

  • DevExpress实现GridView当无数据行时提示消息

    本文实例展示了DevExpress实现GridView当无数据行时提示消息的方法,具体步骤如下: 主要功能代码部分如下: /// <summary> /// 设置当没有数据行的提示信息『CustomDrawEmptyForeground』 /// </summary> /// <param name="gridView">GridView</param> /// <param name="e">Custom

  • DevExpress获取节点下可视区域子节点集合的实现方法

    递归获取节点是很多程序项目中常见的技巧.本文就以实例展示了DevExpress获取节点下可视区域子节点集合的实现方法.分享给大家供参考之用,具体方法如下: 关键部分代码如下: /// <summary> /// 向下递归TreeListNode节点 /// </summary> /// <param name="node">需要向下递归的节点</param> /// <param name="conditionHanlde

  • DevExpress之SplashScreen用法实例

    本文实例展示了DevExpress中SplashScreen的用法,对于C#初学者来说有一定的参考借鉴价值,具体用法如下: 关键代码部分如下: using DevExpress.XtraSplashScreen; using System; namespace DevExpressUtilHelpV3 { /// <summary> /// 基于.NET 3.0的 SplashScreen工具类 /// </summary> public static class SplashSc

  • DevExpress实现自定义GridControl中按钮文字内容的方法

    在一些C#项目的开发中,有时候会使用到GridControl的FindPanel,这样可以很好的对数据进行筛选,可是所展现的按钮文字是英文,如下图所示: 那怎么定义两个按钮问题,以符合项目需求了?本文讲述利用GridLocalizer来实现这一要求的方法.具体步骤如下: 主要功能代码如下: public class BuilderGridLocalizer : GridLocalizer { Dictionary<GridStringId, string> CusLocalizedKeyVal

  • DevExpress设置TreeList图片节点背景色的方法

    本文实例展示了DevExpress设置TreeList图片节点背景色的方法,在项目开发中有一定的应用价值,具体方法如下所示: 主要功能代码如下: /// <summary> /// 设置图片节点的背景色 /// 说明:在CustomDrawNodeImages事件中使用 /// </summary> /// <param name="tree">TreeList</param> /// <param name="e&quo

  • DevExpress实现GridControl列头绘制Checkbox的方法

    本文实例展示了DevExpress实现GridControl列头绘制Checkbox的方法,具体实现方法如下: 主要功能代码如下: /// <summary> /// 为列头绘制CheckBox /// </summary> /// <param name="view">GridView</param> /// <param name="checkItem">RepositoryItemCheckEdit&

  • DevExpress之TreeList用法实例总结

    本文实例总结了DevExpress之TreeList用法,希望对大家学习C#程序设计起到一定的帮助作用.具体实例如下: using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using DevExpress.XtraBars; using DevExpress.XtraTreeList; using DevExpress.XtraTreeList.Node

  • DevExpress之ChartControl用法实例总结

    DevExpress中的ChartControl顾名思义就是数据基于图表展示,其关键在于Series上的处理.本文实例展示了ChartControl的用法,具体内容如下: 主要功能代码部分如下: using System; using System.Drawing; using DevExpress.XtraCharts; namespace DevExpressUtilHelpV3 { public static class ChartToolV3 { /// <summary> /// 创

  • DevExpress获取TreeList可视区域节点集合的实现方法

    本文实例展示了DevExpress获取TreeList可视区域节点集合的实现方法,是比较有实用价值的技巧.分享给大家供大家参考.具体实现方法如下: 关键代码如下: /// <summary> /// 获取可视区域节点 /// </summary> /// <param name="treeList">TreeList</param> /// <param name="conditonHanlder">条件委

  • DevExpress实现自定义TreeListNode的Tooltip的方法

    本文实例展示了DevExpress实现自定义TreeListNode的Tooltip的方法,具体方法如下所示: 主要功能代码如下: /// <summary> /// 为节点提供Tooltip /// 说明: /// 1.设置tree.ToolTipController属性 /// 2.ToolTipController的GetActiveObjectInfo事件中使用 /// 3.举例 /// tlLHData.CustomNodeTooltip(e, node => ///{ ///

  • DevExpress实现为TextEdit设置水印文字的方法

    本文实例展示了DevExpress实现为TextEdit设置水印文字的方法,是一个很实用的技巧.分享给大家供大家参考. 关键代码如下: public static void SetWatermark(this TextEdit textEdit, string watermark) { textEdit.Properties.NullValuePromptShowForEmptyValue = true; textEdit.Properties.NullValuePrompt = waterma

随机推荐