当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-11-01

    本文导语:  本文实例展示了DevExpress实现GridControl同步列头checkbox与列中checkbox状态的方法,有一定的实用价值,具体方法如下: 主要功能代码如下: /// /// 同步列头checkbox与列中checkbox状态 /// /// GridView /// 需要绘制Checkbox的列名 /// M...

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

主要功能代码如下:

/// 
/// 同步列头checkbox与列中checkbox状态
/// 
/// GridView
/// 需要绘制Checkbox的列名
/// MouseEventArgs
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);
}

代码运行效果如下:


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • DevExpress实现TreeList父子节点CheckState状态同步的方法
  • DevExpress SplitContainerControl用法总结
  • DevExpress实现根据行,列索引来获取RepositoryItem的方法
  • DevExpress实现为TextEdit设置水印文字的方法
  • DevExpress实现GridView当无数据行时提示消息
  • DevExpress设置TreeList图片节点背景色的方法
  • DevExpress实现TreeList向上递归获取符合条件的父节点
  • DevExpress实现自定义TreeListNode的Tooltip的方法
  • DevExpress设置FocusedNode背景色的方法
  • DevExpress获取TreeList可视区域节点集合的实现方法
  • DevExpress获取节点下可视区域子节点集合的实现方法
  • DevExpress之SplashScreen用法实例
  • DevExpress之ChartControl用法实例总结
  • DevExpress实现TreeList向上递归获取公共父节点的方法
  • DevExpress实现TreeList节点互斥的方法
  • DevExpress之TreeList用法实例总结


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3