zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

同步状态 实现 checkbox devexpress 列中 GridControl 列头
2023-06-13 09:15:41 时间

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

主要功能代码如下:

///<summary>
///同步列头checkbox与列中checkbox状态
///</summary>
///<paramname="view">GridView</param>
///<paramname="fieldeName">需要绘制Checkbox的列名</param>
///<paramname="e">MouseEventArgs</param>
publicstaticvoidSyncCheckStatus(thisGridViewview,stringfieldeName,MouseEventArgse)
{
/*说明:
*在MouseDown事件中使用
*参考:https://www.devexpress.com/Support/Center/Question/Details/Q354489
*eg:
*privatevoidgvLampConfig_MouseDown(objectsender,MouseEventArgse)
*{
*GridView_view=senderasGridView;
*_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);
}
}
}
privatestaticintgetCheckedCount(GridViewview,stringfiledName)
{
intcount=0;
for(inti=0;i<view.DataRowCount;i++)
{
object_cellValue=view.GetRowCellValue(i,view.Columns[filedName]);
//if(_cellValue!=null&&!(_cellValueisDBNull))
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++;
}
}
returncount;
}
privatestaticvoidCheckAll(GridViewview,stringfieldName)
{
for(inti=0;i<view.DataRowCount;i++)
{
view.SetRowCellValue(i,view.Columns[fieldName],true);
}
}
privatestaticvoidUnChekAll(GridViewview,stringfieldName)
{
for(inti=0;i<view.DataRowCount;i++)
{
view.SetRowCellValue(i,view.Columns[fieldName],false);
}
}

代码使用方法如下:

privatevoidgvLampConfig_MouseDown(objectsender,MouseEventArgse)
{
GridView_view=senderasGridView;
_view.SyncCheckStatus(gcCheckFieldName,e);
}

代码运行效果如下: