DevExpress實(shí)現(xiàn)GridControl同步列頭checkbox與列中checkbox狀態(tài)
本文實(shí)例展示了DevExpress實(shí)現(xiàn)GridControl同步列頭checkbox與列中checkbox狀態(tài)的方法,有一定的實(shí)用價(jià)值,具體方法如下:
主要功能代碼如下:
/// <summary>
/// 同步列頭checkbox與列中checkbox狀態(tài)
/// </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)
{
/*說(shuō)明:
*在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);
}
代碼運(yùn)行效果如下:

- c# GridControl的模糊查詢(xún)實(shí)現(xiàn)代碼
- DevExpress實(shí)現(xiàn)自定義GridControl中按鈕文字內(nèi)容的方法
- DevExpress中GridControl列轉(zhuǎn)義的實(shí)現(xiàn)方法
- DevExpress實(shí)現(xiàn)GridControl列頭繪制Checkbox的方法
- DevExpress實(shí)現(xiàn)GridControl單元格編輯驗(yàn)證的方法
- DevExpress實(shí)現(xiàn)GridControl刪除所有行的方法
- Devexpress中Gridcontrol查找分組
相關(guān)文章
C#運(yùn)算符之與,或,異或及移位運(yùn)算小結(jié)
本文是對(duì)C#中的與,或,異或及移位運(yùn)算進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-10-10
在C#中基于Semantic?Kernel的檢索增強(qiáng)生成(RAG)實(shí)踐記錄
SemanticKernel是一個(gè)用于集成和操作大語(yǔ)言模型的應(yīng)用程序框架,支持C#、Python和Java等多種編程語(yǔ)言,通過(guò)SemanticKernel,開(kāi)發(fā)者可以輕松構(gòu)建基于最新AI技術(shù)的應(yīng)用程序2024-10-10
在C#項(xiàng)目中調(diào)用C++編寫(xiě)的動(dòng)態(tài)庫(kù)的三種方式
這篇文章給大家介紹了三種方式詳解如何在C#項(xiàng)目中調(diào)用C++編寫(xiě)的動(dòng)態(tài)庫(kù),文中通過(guò)代碼示例給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-01-01
Visual C#.Net 網(wǎng)絡(luò)程序開(kāi)發(fā)-Socket篇
Visual C#.Net 網(wǎng)絡(luò)程序開(kāi)發(fā)-Socket篇...2007-03-03
c#基于Redis實(shí)現(xiàn)輕量級(jí)消息組件的步驟
這篇文章主要介紹了c#基于Redis實(shí)現(xiàn)輕量級(jí)消息組件的步驟,幫助大家更好的理解和學(xué)習(xí)使用c#進(jìn)行開(kāi)發(fā),感興趣的朋友可以了解下2021-05-05
程序中兩個(gè)Double類(lèi)型相加出現(xiàn)誤差的解決辦法
本篇文章介紹了,程序中兩個(gè)Double類(lèi)型相加出現(xiàn)誤差的解決辦法。需要的朋友參考下2013-04-04

