下面是筆者自己總結的使用 DevExpress Gridview 的一些經驗小結,分享給大家:
1、去除 GridView 頭上的 "Drag a column header here to group by that column"
--> 點擊 Run Designer -> 找到:OptionView -> 將 ShowGroupPanel : 設置為 false ;
2、如何顯示出 GridView 自帶的搜索功能
--> 點擊 Run Designer -> 找到: OptionsFind -> 將AlwaysVisible : 設置為 True
3、如何將GridView的大小自適應窗體的大小
--> 右鍵 GridView 控件 -> 屬性 -> 找到 Dock : 設置為 Fill
4、當GridView數據源發生變化時,如何更改GridView所"綁定的值"
Code注:其實就是重新創建了一個GridView的實例。
gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView(gridControl1); gridControl1.MainView = gridView1; gridView1.OptionsView.ShowGroupPanel = false; gridView1.OptionsFind.AlwaysVisible = true; gridControl1.DataSource = dt;
5、在GridControl 中添加checkbox復選框
--> gridView -> run designer -> columns -> 添加一列(如果沒有的話) 然后如圖設置-- > 另外當我們需要動態綁定grid數據時,DataTable 中列的名字要和我們在gridview中設置的FileName名字要移植,不然數據是顯示不出來的。
6、讓GridView 行 不可編輯
-- > Run Designer -> OptionsBehavior -> Editable : False
7 、在GridView 行中添加Button按鈕
public void ButtonInitial() { RepositoryItemButtonEdit rib = new RepositoryItemButtonEdit(); rib.TextEditStyle = TextEditStyles.HideTextEditor; rib.Buttons[0].Kind = ButtonPredefines.Glyph; rib.ButtonClick += rib_ButtonClick; rib.Buttons[0].Caption = "詳細信息"; rib.Buttons[0].Visible = true; gridView1.Columns["DOWNSTATE"].ColumnEdit = rib; } void rib_ButtonClick(object sender, ButtonPressedEventArgs e) { int rowindex = gridView1.FocusedRowHandle; DataRow row = gridView1.GetDataRow(rowindex); }
8 、GirdView行添加Button按鈕之后,觸發事件不可用.
將GridView Editable 設置為True 讓GridView可編輯,如果不想讓它可編輯的話,在一列一列的進行設置.原因是:將GridView設置為不可編輯之后,那么鼠標點擊Button那一列只是選中而已,不會進行觸發事件.
9 、GridView 設置選中行的顏色
GridView : Run Designer -> Appearences : selectRow & FocusedRow (兩項都要設置)
BackColor : MediumSlateBlue 背景色
ForeColor : White 前景色 字體顏色
10 、GridView 設置標題行顏色
GridView : Run Designer -> Appearences : HeadPanel 在這個屬性組中都是關於標題行的設置,再次不做詮釋.
當設置完HeadPanel 其實並沒有結束,是不顯示效果的, 還需要設置 GridControl 屬性中 LookAndFeel : Style 設置為ultraFlat , UseDefaultLookAndFeel 設置為 False .
11 、GridView 設置標題行以及內容行 數據居中
標題行 10 所述 在HeadPanel 里有一個TextOptions 展開之后 將HAlignment : Center
如果是將內容行數據居中.有兩種方法 1 : 逐行設置 2 : 設置Appearences
1 : GridView -> Run Designer -> Columns -> AppearanceCell -> TextOptions 找到HAlignment : Center .
2 : GridView -> Run Designer -> Appearance -> ViewCaption -> TextOptions -> HAlignment : Center
12 、GridView添加CheckBox並支持多選操作.
GridView : Run Designer -> OptionsSelection -> MultiSelect : True MultiSelectMode : CheckBoxRowSelect
13 、GridView 添加序號列
GridView : Run Designer -> Event -> CustomDrawRowIndicator
在事件中添加代碼 :
e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; if (e.Info.IsRowIndicator) { if (e.RowHandle >= 0) { e.Info.DisplayText = (e.RowHandle + 1).ToString(); } else if (e.RowHandle < 0 && e.RowHandle > -1000) { e.Info.Appearance.BackColor = System.Drawing.Color.AntiqueWhite; e.Info.DisplayText = "G" + e.RowHandle.ToString(); } }
另外在 Run Desginer -> IndicatorWidth 設置序號列的寬度 一般30左右就比較適合一些了.
14 、單元格雙擊響應
private void gridControl1_DoubleClick(object sender, EventArgs e) { MouseEventArgs arg = e as MouseEventArgs; if (arg == null) return; GridHitInfo hitInfo = gridView1.CalcHitInfo(new Point(arg.X, arg.Y));//獲取坐標點 if (hitInfo.RowHandle >= 0) { DataRow row = gridView1.GetDataRow(hitInfo.RowHandle); _list.Clear(); _list.Add(row[0].ToString()); gisResoureMonControl1.SetSelectResource(_list); } }
15 、獲取選中行的值
代碼:
private void gridData_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) { _id = GWEntLib.Utilities.Mix.ConvertUtils.ToInt32(gridData.GetRowCellValu(e.FocusedRowHandle, "Id")); _emrFileReadList = EMRTemplateFileReadList.GetEMRTemplateFileReadList(_id); gridVersonData.DataSource = _emrFileReadList; }
響應事件:FocusedRowChanged
獲取字段值:gridData.GetRowCellValue(e.FocusedRowHandle, "Id")
注意:FocusedRowChanged是Gridview的事件而不是gridControl的事件
gridControl與Gridview的區別:前者是容器,后者為視圖
16、將GridView 列表表頭固定,無Filter效果
17、DevExpress GridView 獲取當前選中行的值。
int rowIndex = gridView1.FocusedRowHandle; DataRow dr = gridView1.GetDataRow(rowIndex); MessageBox.Show("課件 \"" + dr.ItemArray[0].ToString() + "\" 下載成功");
18、GridView 去除選中行虛線。
Run Desginer -> Appearance : FocusRectStyle : none;