DevExpress中GridControl的使用笔记(转)

DevExpress中GridControl的使用笔记(转)

    </h2>
    <div class="postbody">

转自:https://www.jianshu.com/p/badc1d2f0841

注:练习例子为: DxApplication1 -> XtraForm1 , 例子上传到本博中 2019.4.22

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()); } 
    <span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">private</span> DataTable </span><span class="hljs-title"><span class="hljs-function"><span class="hljs-title">InitDt</span></span><span class="hljs-params"><span class="hljs-function"><span class="hljs-params">()</span>
    </span>{
        DataTable dt = <span class="hljs-keyword"><span class="hljs-keyword">new</span> DataTable(<span class="hljs-string"><span class="hljs-string">"个人简历"</span>);
        dt.Columns.Add(<span class="hljs-string"><span class="hljs-string">"id"</span>, typeof(<span class="hljs-keyword"><span class="hljs-keyword">int</span>));
        dt.Columns.Add(<span class="hljs-string"><span class="hljs-string">"name"</span>, typeof(<span class="hljs-built_in"><span class="hljs-built_in">string</span>));
        dt.Columns.Add(<span class="hljs-string"><span class="hljs-string">"sex"</span>, typeof(<span class="hljs-keyword"><span class="hljs-keyword">int</span>));
        dt.Columns.Add(<span class="hljs-string"><span class="hljs-string">"address"</span>, typeof(<span class="hljs-built_in"><span class="hljs-built_in">string</span>));
        dt.Columns.Add(<span class="hljs-string"><span class="hljs-string">"aihao"</span>, typeof(<span class="hljs-built_in"><span class="hljs-built_in">string</span>));
        dt.Columns.Add(<span class="hljs-string"><span class="hljs-string">"phone"</span>, typeof(<span class="hljs-built_in"><span class="hljs-built_in">string</span>));
   
        dt.Rows.Add(<span class="hljs-keyword"><span class="hljs-keyword">new</span> object[] { <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"张三"</span>, <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"东大街6号"</span>, <span class="hljs-string"><span class="hljs-string">"看书"</span>, <span class="hljs-string"><span class="hljs-string">"12345678910"</span>});
        dt.Rows.Add(<span class="hljs-keyword"><span class="hljs-keyword">new</span> object[] { <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"王五"</span>, <span class="hljs-number"><span class="hljs-number">0</span>, <span class="hljs-string"><span class="hljs-string">"西大街2号"</span>, <span class="hljs-string"><span class="hljs-string">"上网,游戏"</span>, <span class="hljs-string"><span class="hljs-string">""</span> });
        dt.Rows.Add(<span class="hljs-keyword"><span class="hljs-keyword">new</span> object[] { <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"李四"</span>, <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"南大街3号"</span>, <span class="hljs-string"><span class="hljs-string">"上网,逛街"</span>, <span class="hljs-string"><span class="hljs-string">""</span> });
        dt.Rows.Add(<span class="hljs-keyword"><span class="hljs-keyword">new</span> object[] { <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"钱八"</span>, <span class="hljs-number"><span class="hljs-number">0</span>, <span class="hljs-string"><span class="hljs-string">"北大街5号"</span>, <span class="hljs-string"><span class="hljs-string">"上网,逛街,看书,游戏"</span>, <span class="hljs-string"><span class="hljs-string">""</span> });
        dt.Rows.Add(<span class="hljs-keyword"><span class="hljs-keyword">new</span> object[] { <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"赵九"</span>, <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"中大街1号"</span>, <span class="hljs-string"><span class="hljs-string">"看书,逛街,游戏"</span>, <span class="hljs-string"><span class="hljs-string">""</span>});
        <span class="hljs-keyword"><span class="hljs-keyword">return</span> dt;
    }

    <span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">private</span> </span><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">void</span> </span><span class="hljs-title"><span class="hljs-function"><span class="hljs-title">BindDataSource</span></span><span class="hljs-params"><span class="hljs-function"><span class="hljs-params">(DataTable dt)</span>
    </span>{
        <span class="hljs-comment"><span class="hljs-comment">//绑定DataTable  </span>
        gridControl1.DataSource = dt;
    }  

效果:

 
1.png

Level 2:列名

设置:

 
2.png

效果:

 
3.png

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(<span class="hljs-string"><span class="hljs-string">"data"</span>, typeof(decimal));
            dt.Columns.Add(<span class="hljs-string"><span class="hljs-string">"time"</span>, typeof(DateTime));
            dt.Columns.Add(<span class="hljs-string"><span class="hljs-string">"custom"</span>, typeof(<span class="hljs-built_in"><span class="hljs-built_in">string</span>));
       
            dt.Rows.Add(<span class="hljs-keyword"><span class="hljs-keyword">new</span> object[] { <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"张三"</span>, <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"东大街6号"</span>, <span class="hljs-string"><span class="hljs-string">"看书"</span>, <span class="hljs-string"><span class="hljs-string">"12345678910"</span>,<span class="hljs-number"><span class="hljs-number">12</span>,<span class="hljs-string"><span class="hljs-string">"2018/4/26"</span>,<span class="hljs-string"><span class="hljs-string">"data"</span>});
            dt.Rows.Add(<span class="hljs-keyword"><span class="hljs-keyword">new</span> object[] { <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"王五"</span>, <span class="hljs-number"><span class="hljs-number">0</span>, <span class="hljs-string"><span class="hljs-string">"西大街2号"</span>, <span class="hljs-string"><span class="hljs-string">"上网,游戏"</span>, <span class="hljs-string"><span class="hljs-string">"12315"</span>, <span class="hljs-number"><span class="hljs-number">23333</span>, <span class="hljs-string"><span class="hljs-string">"2018/4/26"</span>, <span class="hljs-string"><span class="hljs-string">"test"</span> });
            dt.Rows.Add(<span class="hljs-keyword"><span class="hljs-keyword">new</span> object[] { <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"李四"</span>, <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"南大街3号"</span>, <span class="hljs-string"><span class="hljs-string">"上网,逛街"</span>, <span class="hljs-string"><span class="hljs-string">""</span>, <span class="hljs-number"><span class="hljs-number">12.345</span>, <span class="hljs-string"><span class="hljs-string">"2018/4/26"</span>, <span class="hljs-string"><span class="hljs-string">""</span> });
            dt.Rows.Add(<span class="hljs-keyword"><span class="hljs-keyword">new</span> object[] { <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"钱八"</span>, <span class="hljs-number"><span class="hljs-number">0</span>, <span class="hljs-string"><span class="hljs-string">"北大街5号"</span>, <span class="hljs-string"><span class="hljs-string">"上网,逛街,看书,游戏"</span>, <span class="hljs-string"><span class="hljs-string">""</span>, <span class="hljs-number"><span class="hljs-number">0.123</span>, <span class="hljs-string"><span class="hljs-string">"2018/4/26"</span>, <span class="hljs-string"><span class="hljs-string">""</span> });
            dt.Rows.Add(<span class="hljs-keyword"><span class="hljs-keyword">new</span> object[] { <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"赵九"</span>, <span class="hljs-number"><span class="hljs-number">1</span>, <span class="hljs-string"><span class="hljs-string">"中大街1号"</span>, <span class="hljs-string"><span class="hljs-string">"看书,逛街,游戏"</span>, <span class="hljs-string"><span class="hljs-string">""</span>, <span class="hljs-number"><span class="hljs-number">3.1415926</span>, <span class="hljs-string"><span class="hljs-string">"2018/4/26"</span>, <span class="hljs-string"><span class="hljs-string">""</span> });
            <span class="hljs-keyword"><span class="hljs-keyword">return</span> dt;
        }

设置:

 
5.png
 
6.png
 
7.png

效果:

 
4.png

Tips:

1、gridControl的每一列原始数据是Value,但是显示数据是 DisplayText,默认DisplayText的值即是Value通过DisplayFormat转换之后的值。

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; }} } 
 
8.png

效果:

 
9.png

Level 5:分组

按照性别进行分组:

 
10.png

效果:

 
11.png

Level 6:汇总

设置:

1、显示面板

 
12.png

2、汇总项设置

 
13.png

效果:

 
14.png

Level 7:显示行号

设置:

 
15.png

代码:

 
16.png

效果:

 
17.png

Level 8:点击事件

 
18.png
 private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { if (e.Button == MouseButtons.Left) { Console.WriteLine("Button:MouseButtons.Left"); } 
        <span class="hljs-keyword"><span class="hljs-keyword">if</span> (e.Clicks == <span class="hljs-number"><span class="hljs-number">2</span>)
        {
            Console.WriteLine(<span class="hljs-string"><span class="hljs-string">"Clicks:2"</span>);
        }

        <span class="hljs-keyword"><span class="hljs-keyword">if</span> (e.Delta &gt; <span class="hljs-number"><span class="hljs-number">0</span>)
        {
            Console.WriteLine(<span class="hljs-string"><span class="hljs-string">"Delta &gt; 0"</span>);
        }

        <span class="hljs-keyword"><span class="hljs-keyword">if</span> (e.X &gt; <span class="hljs-number"><span class="hljs-number">0</span> &amp;&amp; e.Y &gt;<span class="hljs-number"><span class="hljs-number">0</span>)
        {
            Console.WriteLine(<span class="hljs-string"><span class="hljs-string">"Pos:({0},{1})"</span>,e.X,e.Y);
        }

        <span class="hljs-keyword"><span class="hljs-keyword">if</span> (e.RowHandle &gt; <span class="hljs-number"><span class="hljs-number">0</span>)
        {
            Console.WriteLine(<span class="hljs-string"><span class="hljs-string">"Row:{0}"</span>,e.RowHandle);
        }

        <span class="hljs-keyword"><span class="hljs-keyword">if</span> (e.CellValue != <span class="hljs-keyword"><span class="hljs-keyword">null</span>)
        {
            Console.WriteLine(<span class="hljs-string"><span class="hljs-string">"CellValue:{0}"</span>,e.CellValue);
        }

        <span class="hljs-keyword"><span class="hljs-keyword">if</span> (e.Column != <span class="hljs-keyword"><span class="hljs-keyword">null</span>)
        {
            Console.WriteLine(<span class="hljs-string"><span class="hljs-string">"Column:{0}"</span>,e.Column.ToString());
        }

    }

Level 9:自定义绘制

代码:

 
19.png
     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;} } } } 

效果:

 
20.png

Level 10:Cell中的控件

设置:

 
21.png

点开ColumnEdit选项,设置选中时数据的类型和值,还可设置灰色和未选中状态的数据。

 
23.png

效果:

 
22.png

Level 11:BandedGridView

转换为BandedGridView:

 
25.png

设置Bands:

 
26.png

效果:

 
24.png

Level 12:Cell中的控件2

A1、添加按钮控件

1、新增一个无绑定的列

 
27.png

2、ColumnEdit选择repositoryItemButtonEdit

 
28.png

 

3、选择Button项

 
29.png

4、添加新项,修改Caption,并选择Kind为Glyph

 
30.png

5、修改TestEditStyle为HideTextEditor

 
31.png

 

6、选择In-place Editor Repository,找到新添加的按钮,选择ButtonClick事件

 
32.png

 

7、代码

    private void repositoryItemButtonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { Console.WriteLine("Row:{0},Index:{1}", gridView1.GetFocusedDataSourceRowIndex(), e.Button.Index); 
        <span class="hljs-keyword"><span class="hljs-keyword">if</span> (e.Button.Index == <span class="hljs-number"><span class="hljs-number">0</span>)<span class="hljs-comment"><span class="hljs-comment">//删除按钮</span>
        {
            table.Rows.RemoveAt(gridView1.GetFocusedDataSourceRowIndex());
        }
        <span class="hljs-keyword"><span class="hljs-keyword">else</span><span class="hljs-comment"><span class="hljs-comment">//编辑按钮</span>
        {
            MessageBox.Show(<span class="hljs-string"><span class="hljs-string">"编辑 Index:"</span> + e.Button.Index);

        }

    }

效果:

 
33.png
A2、另一种按钮控件

和上一种方式一样,主要区别为:

* 选择一个绑定了数据的列
  • 只添加一个按钮
  • 并选择TestEditStyle为DisableTextEditor
     
    35.png

效果:

 
34.png
A3、各种弹出选项框:

参考:DEVEXPRESS GRIDVIEW 代码添加按钮

Level 13:主从表(分层表)

待续......

    

    

      

        

小礼物走一走,来简书

分类: C#, DEV Express
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值