首先介紹一下XtraGrid,XtraGrid有兩個關鍵類:GridControl和GridView。GridControl本身不顯示資料,資料都是顯示在GridView/CardView/XXXXView中。GridControl是各種View的容器。是以要控制顯示,要從GridView這些類入手。
先來一些教程:
1、DevExpress使用教程:XtraGrid常見用法,主要介紹了XtraGrid的資料綁定與資料分析功能,如統計、排序、分頁等。
2、DevExpress使用教程:Gridview下拉框,主要介紹了下拉框的使用。
3、DevExpress使用教程:添加非綁定列,主要介紹了如何添加非綁定列。
4、DevExpress使用教程:向GridControl添加進度條控件
5、DevExpress使用教程:XtraGridControl動态添加右鍵菜單
上面幾個教程基本可以讓你對XtraGrid的用法有一個比較系統的了解,但在實際使用時就會發現有太多的屬性設定,要一一記錄,下面就将我遇到的,比較有用的記錄下來:
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、GridControl列自動比對寬度
//自動調整所有字段寬度 this.gridView1.BestFitColumns(); //調整某列字段寬度 this.gridView1.Columns[n].BestFit();
1 2 3 4 | //自動調整所有字段寬度 this.gridView1.BestFitColumns(); //調整某列字段寬度 this.gridView1.Columns[n].BestFit(); |
5、DevExpress控件組中的GridControl控件不能使橫向滾動條有效。
現象:控件中的好多列都擠在一起,列寬都變的很小,根本無法正常浏覽控件單元格中的内容。再就是如果資料比較少,也會占滿整個GridControl,非常不美觀,此時也可用這種方法解決。
解決:gridView1.OptionsView.ColumnAutoWidth屬性是true,即各列的寬度自動調整,你把它設成false,就會出現了。
6、讓GridView 行 不可編輯
-- > Run Designer -> OptionsBehavior -> Editable : False
7、GridView 設定選中行的顔色
GridView : Run Designer -> Appearences : selectRow & FocusedRow (兩項都要設定)
BackColor : MediumSlateBlue 背景色
ForeColor : White 前景色 字型顔色
8、設定奇、偶行交替顔色
(1) OptionsView.EnableAppearanceEvenRow = true;OptionsView.EnableAppearanceOddRow = true;
(2) 設定Appearance.EvenRow.BackColor和Appearance.OddRow.BackColor
9、GridView 設定标題行顔色
GridView : Run Designer -> Appearences : HeadPanel 在這個屬性組中都是關于标題行的設定,再次不做诠釋.
當設定完HeadPanel 其實并沒有結束,是不顯示效果的, 還需要設定 GridControl 屬性中 LookAndFeel : Style 設定為ultraFlat , UseDefaultLookAndFeel 設定為 False .
10 、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
我在使用時設定了2并不起作用,真正起作用的是:
GridView -> Run Designer -> Appearance -> Row -> TextOptions -> HAlignment : Center
11、GridView添加CheckBox并支援多選操作.
GridView : Run Designer -> OptionsSelection -> MultiSelect : True MultiSelectMode : CheckBoxRowSelect
12、選擇某行後擷取目前表格資料
1 | this.textBox1.Text = gridView2.GetDataRow(e.RowHandle)["列名"].ToString(); |
//不顯示内置的導覽列。
gc1.UseEmbeddedNavigator = false;
//不顯示分組的面闆
gv1.OptionsView.ShowGroupPanel = false;
gv2.OptionsView.ShowGroupPanel = false;
//自動改變行高适應内容
gv1.OptionsView.RowAutoHeight = true;
gv2.OptionsView.RowAutoHeight = true;
//允許自動合并單元格
gv1.OptionsView.AllowCellMerge = true;
//指定某個列的合并單元格
gv1.OptionsView.AllowCellMerge = true;
gv1.Columns[""].AllowMerge = true;
//如果主從表中,沒有找到從表内容也要顯示(預設是不顯示的)
gv1.OptionsDetail.AllowExpandEmptyDetails = true;
//顯示自動篩選行(效果跟Excel的自動篩選差不多)
gv2.OptionsView.ShowAutoFilterRow = true;
//使得GridView不能編輯
gv1.OptionsBehavior.Editable = false;
gv2.OptionsBehavior.Editable = false;
//内置編輯器顯示的模式
gv1.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click;
//主從表顯示的功能是否可用
//gv1.OptionsDetail.EnableMasterViewMode = false;
//如果顯示了主從表,每點開個加号,就會顯示一個Tabs,裡面往往顯示了兩個面闆。
//事實上沒必要這樣幹的。一般選擇關閉。關閉的對象是主GridView的此項屬性。
gv1.OptionsDetail.ShowDetailTabs = false;
1、 如何解決單擊記錄整行選中的問題
View->OptionsBehavior->EditorShowMode 設定為:Click
2、 如何新增一條記錄
(1)、gridView.AddNewRow()
(2)、實作 gridView_InitNewRow 事件
3、如何解決 GridControl 記錄能擷取而沒有顯示出來的問題
gridView.populateColumns();
4、如何讓行隻能選擇而不能編輯(或編輯某一單元格)
(1)、View->OptionsBehavior->EditorShowMode 設定為:Click
(2)、View->OptionsBehavior->Editable 設定為:false
5、如何禁用 GridControl 中單擊列彈出右鍵菜單
設定 Run Design->OptionsMenu->EnableColumnMenu 設定為:false
6、如何隐藏 GridControl 的 GroupPanel 表頭
設定 Run Design->OptionsView->ShowGroupPanel 設定為:false
7、如何禁用 GridControl 中列頭的過濾器 過濾器如下圖所示:
設定 Run Design->OptionsCustomization->AllowFilter 設定為:false
8、如何在查詢得到 0 條記錄時顯示自定義的字元提示/顯示 如圖所示:
方法如下:
//When no Records Are Being Displayed
private void gridView1_CustomDrawEmptyForeground(object sender, CustomDrawEventArgs e)
{
//方法一(此方法為GridView設定了資料源綁定時,可用)
ColumnView columnView = sender as ColumnView;
BindingSource bindingSource = this.gridView1.DataSource as BindingSource;
if(bindingSource.Count == 0)
{
string str = "沒有查詢到你所想要的資料!";
Font f = new Font("宋體", 10, FontStyle.Bold);
Rectangle r = new Rectangle(e.Bounds.Top + 5, e.Bounds.Left + 5, e.Bounds.Right - 5, e.Bounds.Height - 5);
e.Graphics.DrawString(str, f, Brushes.Black, r); }
//方法二(此方法為GridView沒有設定資料源綁定時,使用,一般使用此種方 法)
if (this._flag)
{ if (this.gridView1.RowCount == 0)
{ string str = "沒有查詢到你所想要的資料!"; Font f = new Font("宋體", 10, FontStyle.Bold);
Rectangle r = new Rectangle(e.Bounds.Left + 5, e.Bounds.Top + 5, e.Bounds.Width - 5, e.Bounds.Height - 5);
e.Graphics.DrawString(str, f, Brushes.Black, r); } } }
9、如何顯示水準滾動條?或
設定 this.gridView.OptionsView.ColumnAutoWidth = false;
.....清單寬度自适應内容
gridview1.BestFitColumns();
10、如何定位到第一條資料/記錄?
設定 this.gridView.MoveFirst()
11、如何定位到下一條資料/記錄?
設定 this.gridView.MoveNext()
12、如何定位到最後一條資料/記錄?
設定 this.gridView.MoveLast()