首先介紹一下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、選擇某行後獲取當前表格數據
this.textBox1.Text = gridView2.GetDataRow(e.RowHandle)["列名"].ToString();
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()