DevExpress GridControl功能总结
寫在前面,Dev控件已經(jīng)很久了,功能也很強(qiáng)大,截止到現(xiàn)在我編寫文檔出來的Dev的版本已經(jīng)到了14.1了,看了Demo真的很強(qiáng)大,效果也很好,結(jié)合自己這一個(gè)月開發(fā),分享一下自己研究過后的經(jīng)驗(yàn),不讓大家走更多的彎路
- DevExpress安裝順序
 - GridControl基本樣式設(shè)置
 - GridControl常用事件和描述
 - GridControl右鍵菜單
 - GridControl全選和反選
 - GridControl添加小計(jì)功能
 -  GridControl固定表頭 
1.安裝從未如此簡(jiǎn)單
Dev的安裝文件已經(jīng)放大百度云中方便大家下載:DevExpress 12.2.7,下載后按照?qǐng)D片數(shù)字順序依次安裝,這就是Dev 12.2.7,你值得擁有。
if (bandedGridView1.GetFocusedDataRow() == null) return;//運(yùn)單編號(hào)var columnValue= bandedGridView1.GetFocusedRowCellValue("綁定列字段名稱").ToString();?
?
?
注意事項(xiàng):使用VS2012和2010搭配DevExpress 12.2.7這個(gè)版本一起開發(fā)是最好的,工具箱暫時(shí)無法導(dǎo)入VS2013
2.基本樣式設(shè)置,你會(huì)嗎?
面對(duì)第一次使用GridControl,搞不懂GridControl下面為什么有一堆的GridView呢?后來想想,原來GridControl是一個(gè)大容器,下面有很多視圖,那么就是操作視圖,下面是我的一些常用樣式設(shè)置。
 
??
bandedGridView1.IndicatorWidth = 40; //自增列寬度bandedGridView1.OptionsView.ColumnAutoWidth = false; //自動(dòng)調(diào)整列寬,使所有列的寬度和視圖的寬度匹配bandedGridView1.OptionsCustomization.AllowSort = false;//禁止用戶對(duì)數(shù)據(jù)進(jìn)行排序操作bandedGridView1.OptionsCustomization.AllowColumnResizing = false; //禁止各列頭改變列寬bandedGridView1.VertScrollVisibility = ScrollVisibility.Auto; //顯示垂直滾動(dòng)條bandedGridView1.HorzScrollVisibility = ScrollVisibility.Auto; //顯示水平滾動(dòng)條bandedGridView1.OptionsMenu.EnableColumnMenu = false; //禁止列頭上的菜單bandedGridView1.OptionsMenu.EnableFooterMenu = false; //禁止頁腳上的菜單bandedGridView1.OptionsMenu.EnableGroupPanelMenu = false; //禁止分組面板上的菜單bandedGridView1.OptionsNavigation.UseTabKey = false; //不使用TAB/SHIFT+TAB移動(dòng)焦點(diǎn)bandedGridView1.OptionsBehavior.Editable = false;//不允許編輯bandedGridView1.OptionsBehavior.ReadOnly = true;//只讀? 3.這些事件你會(huì)常用
? ? ?CustomDrawRowIndicator:DGV顯示自增行號(hào)
e.Appearance.TextOptions.HAlignment?=?HorzAlignment.Far;if?(e.Info.IsRowIndicator){if?(e.RowHandle?>=?0){e.Info.DisplayText?=?(e.RowHandle?+?1).ToString(CultureInfo.InvariantCulture);}else?if?(e.RowHandle?<?0?&&?e.RowHandle?>?-1000){e.Info.Appearance.BackColor?=?Color.AntiqueWhite;e.Info.DisplayText?=?"G"?+?e.RowHandle;}}? ? ? ? ? ?RowCellStyle:GridView隔行變色
bandedGridView1.Appearance.OddRow.BackColor = Color.White; // 設(shè)置奇數(shù)行顏色 // 默認(rèn)也是白色 可以省略 bandedGridView1.OptionsView.EnableAppearanceOddRow = true; // 使能 // 和和上面綁定 同時(shí)使用有效 bandedGridView1.Appearance.EvenRow.BackColor = Color.FromArgb(255, 250, 205); // 設(shè)置偶數(shù)行顏色 bandedGridView1.OptionsView.EnableAppearanceEvenRow = true; // 使能 // 和和上面綁定 同時(shí)使用有效if (e.RowHandle == bandedGridView1.FocusedRowHandle){e.Appearance.Font = new Font("宋體", 9, FontStyle.Bold);} View Code? FocusedRowChanged:選中行改變綁定行數(shù)據(jù)到對(duì)應(yīng)控件中?
if (bandedGridView1.GetFocusedDataRow() == null) return;//判斷當(dāng)前選中行是否為null//返回值var columnValue= bandedGridView1.GetFocusedRowCellValue("綁定列字段名稱").ToString();   ? 4.添加右擊菜單一個(gè)很常用的功能
? ? ?
? ??添加ContextMenuStrip控件,然后自定義按鈕,可以找一些16*16的小圖標(biāo)點(diǎn)綴一下,很不錯(cuò)
? ? ? ?
這樣一個(gè)右鍵菜單就已經(jīng)綁定成功
? ? ??5.GridControl全選和反選
 ? ? ?這是一個(gè)比較難的問題,這里我結(jié)合網(wǎng)上尋找的資料總結(jié)了一個(gè)實(shí)體類貼上源代碼
?
//------------------------------------------------------------------------------------- // All Rights Reserved , Copyright (C) 2014 , ZTO , Ltd . //-------------------------------------------------------------------------------------using System.Drawing; using System.Windows.Forms; using DevExpress.XtraEditors.Repository;namespace ZTO.WayBill.Utilities {/// <summary>/// Dev GridControl 創(chuàng)建全選復(fù)選框////// 修改紀(jì)錄////// 2014-5-30 版本:1.0 YangHengLian 創(chuàng)建主鍵,注意命名空間的排序。/// /// 版本:1.0////// <author>/// <name>YangHengLian</name>/// <date>2014-5-30</date>/// </author>/// </summary>public class DevControlHelper{/// <summary>/// 創(chuàng)建復(fù)選框/// </summary>/// <param name="e"></param>/// <param name="chk"></param>public static void DrawCheckBox(DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e, bool chk){RepositoryItemCheckEdit repositoryCheck = e.Column.ColumnEdit as RepositoryItemCheckEdit;if (repositoryCheck != null){Graphics g = e.Graphics;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();}}/// <summary>/// 全選,反選/// </summary>/// <param name="gridView"></param>/// <param name="fieldName"></param>/// <param name="currentStatus"></param>/// <returns></returns>public 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;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;}} } View Code?
?
下面是使用步驟
窗體加載事件添加一些代碼
private bool _mCheckStatus; //GridControl全選,作為全局變量,默認(rèn)falseprivate void FrmInputBill_Load(object sender, EventArgs e){bandedGridView1.OptionsBehavior.Editable = false;bandedGridView1.OptionsBehavior.ReadOnly = true;var col = new BandedGridColumn { FieldName = "Check", Visible = true, VisibleIndex = 0, ColumnEdit = new RepositoryItemCheckEdit() };col.OptionsColumn.AllowEdit = true; //CheckBox可以編輯改變gridBand1.Columns.Insert(0, col);bandedGridView1.Click += bandedGridView1_Click;bandedGridView1.CustomDrawColumnHeader += bandedGridView1_CustomDrawColumnHeader;bandedGridView1.DataSourceChanged += bandedGridView1_DataSourceChanged;//這里綁定數(shù)據(jù)源 }#region GridControl支持全選事件private void bandedGridView1_Click(object sender, EventArgs e){if (DevControlHelper.ClickGridCheckBox(this.bandedGridView1, "Check", _mCheckStatus)){_mCheckStatus = !_mCheckStatus;}}private void bandedGridView1_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e){if (e.Column != null && e.Column.FieldName == "Check"){e.Info.InnerElements.Clear();e.Painter.DrawObject(e.Info);DevControlHelper.DrawCheckBox(e, _mCheckStatus);e.Handled = true;}}private void bandedGridView1_DataSourceChanged(object sender, EventArgs e){GridColumn column = this.bandedGridView1.Columns.ColumnByFieldName("Check");if (column != null){column.Width = 40;column.OptionsColumn.ShowCaption = false;column.ColumnEdit = new RepositoryItemCheckEdit();}}#endregion 全選和反選?
6.添加小計(jì)功能第一步
第二步
加載完數(shù)據(jù)之后綁定
bandedGridView1.Columns["綁定字段列名"].Summary.Add(DevExpress.Data.SummaryItemType.Count,?"BILL_CODE",?"總計(jì):{0}條");?//添加小計(jì)功能,在指定的列上添加一個(gè)統(tǒng)計(jì)對(duì)象 刪除動(dòng)作修改對(duì)應(yīng)的小計(jì)信息,代碼如下: bandedGridView1.Columns["綁定字段列名"].Summary[0].DisplayFormat?= string.Format("小計(jì){0}條",?bandedGridView1.RowCount); 7.固定表頭
記錄了一些GridControl的常用代碼,分享給大家,如果有興趣的可以到我的群里進(jìn)行提問,不僅包括GridControl,其他的控件我也研究了,運(yùn)用到項(xiàng)目中
將來的你一定會(huì)感激現(xiàn)在拼命的自己
總結(jié)
以上是生活随笔為你收集整理的DevExpress GridControl功能总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Spring Security 中取得
 - 下一篇: NOTIFYICONDATA结构