一般屬性設(shè)置
- 不顯示分組框:
Gridview->Option View->Show Group Panel=false
- 單元格不可編輯:
gridcontrol -->gridview -->OptionsBehavior -->Editable=false
- 禁用過濾器:
Run Design->OptionsCustomization->AllowFilter=false
- 禁用右鍵菜單:
Run Design->OptionsMenu->EnableColumnMenu=false
- 列的寬度自動(dòng)調(diào)整:
gridView1.OptionsView.ColumnAutoWidth=true
- 禁止排序:
gridView1.OptionsCustomization.AllowSort = false;
- 列頭禁止移動(dòng):
gridView1.OptionsCustomization.AllowColumnMoving = false;
- 每次選擇一行:
this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
- 記錄定位:
this.gridView.MoveNext() this.gridView.MoveLast() this.gridView.MoveFirst()
- 顯示水平滾動(dòng)條:
this.gridView.OptionsView.ColumnAutoWidth = false;
- 凍結(jié)列:
physicColumn.Fixed = FixedStyle.Left;
數(shù)據(jù)綁定
- 基本的綁定
gridControl1.DataSource=dt; 在對應(yīng)的Grid中添加列,,設(shè)置其中的Data(Category)
- 根據(jù)數(shù)據(jù)源自動(dòng)產(chǎn)生列
gridView2.PopulateColumns();
添加底部統(tǒng)計(jì)行
實(shí)現(xiàn)如下圖所示中的統(tǒng)計(jì)功能:
參考文章
實(shí)現(xiàn)步驟
- 設(shè)置顯示Footer:
OptionsView > ShowFooter
- 設(shè)置GridView中的
Summary 字段或者手動(dòng)設(shè)置統(tǒng)計(jì)列:gridView1.Columns["Quantity"].Summary.Add(DevExpress.Data.SummaryItemType.Average, "Quantity", "Avg={0:n2}");
自定義綁定
很多時(shí)候,我們并不是對所有的行進(jìn)行統(tǒng)計(jì),,可能我們是通過一些特定的條件進(jìn)行統(tǒng)計(jì),,那么可以進(jìn)行統(tǒng)計(jì)行的自定義綁定,,步驟如下:
- 設(shè)置統(tǒng)計(jì)類型為
Custom
- 處理事件:
GridView.CustomSummaryCalculate
辨別是哪個(gè)統(tǒng)計(jì)項(xiàng)的方法
- e.Item是
GridSummaryItem ,,可以利用Item中的Tag 字段
- 注意使用
e.SummaryProcess == CustomSummaryProcess.Calculate
可以在e.SummaryProcess == CustomSummaryProcess.Finalize 中直接給統(tǒng)計(jì)項(xiàng)賦值。
private void gridView2_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)
{
if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
{
e.TotalValue = 100;
}
}
樣式設(shè)定
顯示行號
分組名稱自定義
GridControl控件分組時(shí),,分組的名稱僅僅是當(dāng)前分組的字段名稱,,如果我們想按下圖一樣自定義分組,要怎么做呢,?
自定義方法
使用分組行繪制事件
private void gridView1_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
{
var info = (GridGroupRowInfo)e.Info;
var count=info.View.GetChildRowCount(e.RowHandle);
info.GroupText = string.Format("{0},,票數(shù):{1}", info.GroupText, count);
}
使用CustomColumnDisplayText 事件
private void gridView_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) {
if (e.Column.FieldName == "Order Sum" && e.IsForGroupRow) {
double rowValue = Convert.ToDouble(gridView.GetGroupRowValue(e.GroupRowHandle, e.Column));
double val = Math.Floor(rowValue / 100);
string groupRowInterval = string.Format("{0:c} - {1:c} ", val * 100, (val + 1) * 100);
if (val > 14)
groupRowInterval = string.Format(">= {0:c} ", val * 100);
e.DisplayText = "Order Sum: " + groupRowInterval;
}
}
- 使用
GroupFormat 屬性
使用分組統(tǒng)計(jì)項(xiàng)(推薦):
gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "Name", null, "({0}票)");
gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, "Volume", null, "({0}CMB)");
自定義屬性
- 獲取分組計(jì)數(shù):
GridView.GetChildRowCount
奇偶行顏色設(shè)置
OptionsView.EnableAppearanceEvenRow = true ;OptionsView.EnableAppearanceOddRow = true;
- 設(shè)置
Appearance.EvenRow.BackColor 和Appearance.OddRow.BackColor
設(shè)置某個(gè)單元格的顏色
- 通過在
Appearence 中添加FormatCondition ,,設(shè)置應(yīng)用與整行,,還是單一個(gè)單元格
- 使用事件
gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) 判斷 cs
if (e.Column.FieldName == "F_State") { if
(e.CellValue.ToString().Equals("False")) {
e.Appearance.ForeColor=Color.Red;
e.Appearance.DrawString(e.Cache,e.DisplayText,r); e.Handled =
true; } }
重置文字的顯示
比如數(shù)值為0時(shí)顯示為空白
使用CustomColumnDisplayText 事件
private void gridView1_CustomColumnDisplayText(object sender,CustomColumnDisplayTextEventArgs e) {
if(e.Column.FieldName == "Discount")
if(Convert.ToDecimal(e.Value) == 0) e.DisplayText = "";
}
設(shè)置為超鏈接單元格并處理事件
很多時(shí)候,我們點(diǎn)擊某個(gè)單元格會觸發(fā)一些事件,,比如彈出對話框,,顯示詳情或者其他一些重要的信息,這個(gè)時(shí)候,,如果能夠像html一樣,,顯示個(gè)超鏈接的形式,會比較人性化,,使用者一看就知道這個(gè)單元格是可以點(diǎn)擊的,,比如下面這種格式:
- 新建
DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit
- 把上述Item賦值到Column的
ColumnEdit 屬性
- 獲取點(diǎn)擊的單元格,則處理事件
gridView2_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) ,。該事件如果單元格處于編輯狀態(tài),,則右鍵觸發(fā),否則左鍵觸發(fā)
上述方法的弊端為:點(diǎn)擊整個(gè)單元格,,會觸發(fā)事件,,跟點(diǎn)擊單元格中的鏈接才會觸發(fā)事件相差甚大,,可惜GridControl中沒有GridView控件中的CellContentClick 事件,所以只能采用折中的方法,。
重要事件
- 選擇某行觸發(fā):
gridView2.RowClick += new DevExpress.XtraGrid.Views.Grid.RowClickEventHandler(gridView2_RowClick);
數(shù)據(jù)獲取
- 選擇某行后獲取當(dāng)前表格數(shù)據(jù):
this.textBox1.Text = gridView2.GetDataRow(e.RowHandle)["列名"].ToString();
|