GridControl 选择列、复选框全选(上)
生活随笔
收集整理的這篇文章主要介紹了
GridControl 选择列、复选框全选(上)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
說(shuō)明:
??? GirdControl 中加入一列,這一列不是寫在數(shù)據(jù)庫(kù)中的,而是代碼中加入的。
圖示:
?
底層類代碼:
#region GridControl 全選/// <summary>/// 是否選中/// </summary>private static bool chkState = false;//復(fù)選框列名稱private static string chkFileName = "";//復(fù)選框列寬private static int chkWidth = 30;//GridView public static DevExpress.XtraGrid.Views.Grid.GridView GView = null;private DevExpress.XtraGrid.Views.Grid.GridView gView {get {if (GView == null){GView = new DevExpress.XtraGrid.Views.Grid.GridView();}return GView;}set {this.gView = value;}} public static void GridCheckEdit(DevExpress.XtraGrid.Views.Grid.GridView gv, string checkFileName, int checkWidth){if (gv != null) { chkFileName = checkFileName;chkWidth = checkWidth;GView = gv;//不顯示復(fù)選框的列標(biāo)題gv.Columns[chkFileName].OptionsColumn.ShowCaption = false;//復(fù)選框的形狀 gv.Columns[chkFileName].ColumnEdit 實(shí)例是 repositoryItemCheckEdit1 //repositoryItemCheckEdit1.CheckStyle = DevExpress.XtraEditors.Controls.CheckStyles.Standard;復(fù)選框載入的狀態(tài) 實(shí)心 空心 空心打勾//repositoryItemCheckEdit1.NullStyle = DevExpress.XtraEditors.Controls.StyleIndeterminate.Unchecked;//點(diǎn)擊事件gv.Click += new System.EventHandler(gv_Click);//畫列頭CheckEditgv.CustomDrawColumnHeader += new DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventHandler(gv_CustomDrawColumnHeader);gv.DataSourceChanged += new EventHandler(gv_DataSourceChanged);}}private static void gv_Click(object sender, EventArgs e){if (ClickGridCheckBox(GView, chkFileName, chkState)){chkState = !chkState;}}private static void gv_CustomDrawColumnHeader(object sender, DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e){if (e.Column != null && e.Column.FieldName ==chkFileName){e.Info.InnerElements.Clear();e.Painter.DrawObject(e.Info);DrawCheckBox(e, chkState);e.Handled = true;} }private static void gv_DataSourceChanged(object sender, EventArgs e){DevExpress.XtraGrid.Columns.GridColumn column = GView.Columns.ColumnByFieldName(chkFileName);if (column != null){column.Width = chkWidth;column.OptionsColumn.ShowCaption = false;column.ColumnEdit = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();} }private static void DrawCheckBox(DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e, bool chk){DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit repositoryCheck = e.Column.ColumnEdit as DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit;if (repositoryCheck != null){System.Drawing.Graphics g = e.Graphics;System.Drawing.Rectangle r = e.Bounds;DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo info;DevExpress.XtraEditors.Drawing.CheckEditPainter painter;DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs args;info = repositoryCheck.CreateViewInfo() as DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo;painter = repositoryCheck.CreatePainter() as DevExpress.XtraEditors.Drawing.CheckEditPainter;info.EditValue = chk;info.Bounds = r;info.CalcViewInfo(g);args = new DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs(info, new DevExpress.Utils.Drawing.GraphicsCache(g), r);painter.Draw(args);args.Cache.Dispose();}}private static bool ClickGridCheckBox(DevExpress.XtraGrid.Views.Grid.GridView gridView, string fieldName, bool currentStatus){bool result = false;if (gridView != null){//禁止排序 gridView.ClearSorting();gridView.PostEditor();DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo info;System.Drawing.Point pt = gridView.GridControl.PointToClient(Control.MousePosition);info = gridView.CalcHitInfo(pt);if (info.InColumn && info.Column != null && info.Column.FieldName == fieldName){for (int i = 0; i < gridView.RowCount; i++){gridView.SetRowCellValue(i, fieldName, !currentStatus);}return true;}}return result;} #endregion?
前臺(tái)調(diào)用:
注意:GridControl綁定前。手動(dòng)添加一列。添加完畢之后,在綁定。
//加入一列dt.Columns.Add("chk", System.Type.GetType("System.Boolean"));dt.Columns["chk"].DefaultValue = Boolean.FalseString;gridControl1.DataSource = dt;Functionjsj.GridCheckEdit(gv, "chk", 50);chk 圖例:
?
轉(zhuǎn)載于:https://www.cnblogs.com/jzssuanfa/p/6795660.html
總結(jié)
以上是生活随笔為你收集整理的GridControl 选择列、复选框全选(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python怎么清除代码_Python如
- 下一篇: 计算机编辑文档教程,腾讯TIM在线文档编