主要參考鏈接:DevExpress GridControl控件使用
Content
- [Level 1:基本](#Level 1:基本)
- [Level 2:列名](#Level 2:列名)
- [Level 3:格式化顯示](#Level 3:格式化顯示)
- [Level 4:自定義顯示](#Level 4:自定義顯示)
- [Level 5:分組](#Level 5:分組)
- [Level 6:匯總](#Level 6:匯總)
- [Level 7:顯示行號](#Level 7:顯示行號)
- [Level 8:點擊事件](#Level 8:點擊事件)
- [Level 9:自定義繪制](#Level 9:自定義繪制)
- [Level 10:Cell中的控](#Level 10:Cell中的控)
- [Level 11:BandedGridView](#Level 11:BandedGridView)
- [Level 12:Cell中的控件2](#Level 12:Cell中的控件2)
- [Level 13:主從表(分層表)](#Level 13:主從表(分層表))
Level 1:基本
代碼:
private void Form1_Load(object sender, EventArgs e)
{
BindDataSource(InitDt());
}
private DataTable InitDt()
{
DataTable dt = new DataTable("個人簡歷");
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("sex", typeof(int));
dt.Columns.Add("address", typeof(string));
dt.Columns.Add("aihao", typeof(string));
dt.Columns.Add("phone", typeof(string));
dt.Rows.Add(new object[] { 1, "張三", 1, "東大街6號", "看書", "12345678910"});
dt.Rows.Add(new object[] { 1, "王五", 0, "西大街2號", "上網(wǎng),游戲", "" });
dt.Rows.Add(new object[] { 1, "李四", 1, "南大街3號", "上網(wǎng),逛街", "" });
dt.Rows.Add(new object[] { 1, "錢八", 0, "北大街5號", "上網(wǎng),逛街,看書,游戲", "" });
dt.Rows.Add(new object[] { 1, "趙九", 1, "中大街1號", "看書,逛街,游戲", ""});
return dt;
}
private void BindDataSource(DataTable dt)
{
//綁定DataTable
gridControl1.DataSource = dt;
}
效果:
Level 2:列名
設(shè)置:
效果:
Level 3:格式化顯示
代碼:
private DataTable InitDt()
{
DataTable dt = new DataTable("個人簡歷");
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("sex", typeof(int));
dt.Columns.Add("address", typeof(string));
dt.Columns.Add("aihao", typeof(string));
dt.Columns.Add("phone", typeof(string));
dt.Columns.Add("data", typeof(decimal));
dt.Columns.Add("time", typeof(DateTime));
dt.Columns.Add("custom", typeof(string));
dt.Rows.Add(new object[] { 1, "張三", 1, "東大街6號", "看書", "12345678910",12,"2018/4/26","data"});
dt.Rows.Add(new object[] { 1, "王五", 0, "西大街2號", "上網(wǎng),游戲", "12315", 23333, "2018/4/26", "test" });
dt.Rows.Add(new object[] { 1, "李四", 1, "南大街3號", "上網(wǎng),逛街", "", 12.345, "2018/4/26", "" });
dt.Rows.Add(new object[] { 1, "錢八", 0, "北大街5號", "上網(wǎng),逛街,看書,游戲", "", 0.123, "2018/4/26", "" });
dt.Rows.Add(new object[] { 1, "趙九", 1, "中大街1號", "看書,逛街,游戲", "", 3.1415926, "2018/4/26", "" });
return dt;
}
設(shè)置:
效果:
Tips:
1望蜡、gridControl的每一列原始數(shù)據(jù)是Value呼畸,但是顯示數(shù)據(jù)是 DisplayText稼虎,默認(rèn)DisplayText的值即是Value通過DisplayFormat轉(zhuǎn)換之后的值。
2、 gridControl下的事件一般是包含表格GridView切換,點擊,更改的事件,用的不多种玛;每一個GridView下的事件包含行列處理,菜單顯示瓤檐,分組排序等事件赂韵,我們常用。(所有在使用事件時挠蛉,一定要明確是control事件還是view事件)
Level 4:自定義顯示
代碼:
private void gridView1_CustomColumnDisplayText(object sender,
DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
{
if (e.Column.FieldName == "sex")
{
switch (e.Value.ToString().Trim())
{
case "1":
e.DisplayText = "男";
break;
case "0":
e.DisplayText = "女";
break;
default:
e.DisplayText = "";
break;
}}
}
效果:
Level 5:分組
按照性別進(jìn)行分組:
效果:
Level 6:匯總
設(shè)置:
1祭示、顯示面板
2、匯總項設(shè)置
效果:
Level 7:顯示行號
設(shè)置:
代碼:
效果:
Level 8:點擊事件
private void gridView1_RowCellClick(object sender,
DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Console.WriteLine("Button:MouseButtons.Left");
}
if (e.Clicks == 2)
{
Console.WriteLine("Clicks:2");
}
if (e.Delta > 0)
{
Console.WriteLine("Delta > 0");
}
if (e.X > 0 && e.Y >0)
{
Console.WriteLine("Pos:({0},{1})",e.X,e.Y);
}
if (e.RowHandle > 0)
{
Console.WriteLine("Row:{0}",e.RowHandle);
}
if (e.CellValue != null)
{
Console.WriteLine("CellValue:{0}",e.CellValue);
}
if (e.Column != null)
{
Console.WriteLine("Column:{0}",e.Column.ToString());
}
}
Level 9:自定義繪制
代碼:
private void gridView1_CustomDrawCell(object sender,
DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
{
if (e.Column.FieldName.Equals("data"))
{
GridCellInfo cellInfo = e.Cell as GridCellInfo;
if (cellInfo.IsDataCell )
{
if (double.Parse(cellInfo.CellValue.ToString()) < 1)
{
e.Appearance.BackColor = Color.OrangeRed;
}
else if (double.Parse(cellInfo.CellValue.ToString()) < 100)
{
e.Appearance.BackColor = Color.YellowGreen;
}
else
{
e.Appearance.BackColor = Color.Gold;}
}
}
}
效果:
Level 10:Cell中的控件
設(shè)置:
點開ColumnEdit選項谴古,設(shè)置選中時數(shù)據(jù)的類型和值质涛,還可設(shè)置灰色和未選中狀態(tài)的數(shù)據(jù)。
效果:
Level 11:BandedGridView
轉(zhuǎn)換為BandedGridView:
設(shè)置Bands:
效果:
Level 12:Cell中的控件2
A1掰担、添加按鈕控件
1汇陆、新增一個無綁定的列
2、ColumnEdit選擇repositoryItemButtonEdit
3带饱、選擇Button項
4毡代、添加新項,修改Caption勺疼,并選擇Kind為Glyph
5教寂、修改TestEditStyle為HideTextEditor
6、選擇In-place Editor Repository
执庐,找到新添加的按鈕酪耕,選擇ButtonClick
事件
7、代碼
private void repositoryItemButtonEdit1_ButtonClick(object sender,
DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
{
Console.WriteLine("Row:{0},Index:{1}", gridView1.GetFocusedDataSourceRowIndex(), e.Button.Index);
if (e.Button.Index == 0)//刪除按鈕
{
table.Rows.RemoveAt(gridView1.GetFocusedDataSourceRowIndex());
}
else//編輯按鈕
{
MessageBox.Show("編輯 Index:" + e.Button.Index);
}
}
效果:
A2轨淌、另一種按鈕控件
和上一種方式一樣迂烁,主要區(qū)別為:
* 選擇一個綁定了數(shù)據(jù)的列
- 只添加一個按鈕
- 并選擇TestEditStyle為
DisableTextEditor
35.png
效果:
A3看尼、各種彈出選項框:
Level 13:主從表(分層表)
待續(xù)......