当前位置:首页 > 技术知识 > 正文内容

DevExpress使用教程:GridView经验小结

下面是笔者自己总结的使用 DevExpress Gridview的一些经验小结,分享给大家:

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、当GridView数据源发生变化时,如何更改GridView所"绑定的值"

Code注:其实就是重新创建了一个GridView的实例。

1  gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView(gridControl1);
2  gridControl1.MainView = gridView1;
3  gridView1.OptionsView.ShowGroupPanel = false;
4  gridView1.OptionsFind.AlwaysVisible = true;
5  gridControl1.DataSource = dt;

5、在GridControl 中添加checkbox复选框

--> gridView -> run designer -> columns -> 添加一列(如果没有的话) 然后如图设置-- > 另外当我们需要动态绑定grid数据时,DataTable 中列的名字要和我们在gridview中设置的FileName名字要移植,不然数据是显示不出来的。

6、让GridView 行 不可编辑

-- > Run Designer -> OptionsBehavior -> Editable : False

7 、在GridView 行中添加Button按钮

public void ButtonInitial
        {
            RepositoryItemButtonEdit rib = new RepositoryItemButtonEdit;
            rib.TextEditStyle = TextEditStyles.HideTextEditor;
            rib.Buttons[0].Kind = ButtonPredefines.Glyph;
            rib.ButtonClick += rib_ButtonClick; 
            rib.Buttons[0].Caption = "详细信息";
            rib.Buttons[0].Visible = true;
            gridView1.Columns["DOWNSTATE"].ColumnEdit = rib;

        }

        void rib_ButtonClick(object sender, ButtonPressedEventArgs e)
        {
            int rowindex = gridView1.FocusedRowHandle;
            DataRow row = gridView1.GetDataRow(rowindex); 
        }

8 、GirdView行添加Button按钮之后,触发事件不可用.

将GridView Editable 设置为True 让GridView可编辑,如果不想让它可编辑的话,在一列一列的进行设置.原因是:将GridView设置为不可编辑之后,那么鼠标点击Button那一列只是选中而已,不会进行触发事件.

9 、GridView 设置选中行的颜色

GridView : Run Designer -> Appearences : selectRow & FocusedRow (两项都要设置)

BackColor : MediumSlateBlue 背景色

ForeColor : White 前景色 字体颜色

10 、GridView 设置标题行颜色

GridView : Run Designer -> Appearences : HeadPanel 在这个属性组中都是关于标题行的设置,再次不做诠释.

当设置完HeadPanel 其实并没有结束,是不显示效果的, 还需要设置 GridControl 属性中 LookAndFeel : Style 设置为ultraFlat , UseDefaultLookAndFeel 设置为 False .

11 、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

12 、GridView添加CheckBox并支持多选操作.

GridView : Run Designer -> OptionsSelection -> MultiSelect : True MultiSelectMode : CheckBoxRowSelect

13 、GridView 添加序号列

GridView : Run Designer -> Event -> CustomDrawRowIndicator

在事件中添加代码 :

e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
            if (e.Info.IsRowIndicator)
            {
                if (e.RowHandle >= 0)
                {
                    e.Info.DisplayText = (e.RowHandle + 1).ToString;
                }
                else if (e.RowHandle < 0 && e.RowHandle > -1000)
                {
                    e.Info.Appearance.BackColor = System.Drawing.Color.AntiqueWhite;
                    e.Info.DisplayText = "G" + e.RowHandle.ToString;
                }
            }

另外在 Run Desginer -> IndicatorWidth 设置序号列的宽度 一般30左右就比较适合一些了.

14 、单元格双击响应

private void gridControl1_DoubleClick(object sender, EventArgs e)
        {
            MouseEventArgs arg = e as MouseEventArgs;
            if (arg == null)
                return;

            GridHitInfo hitInfo = gridView1.CalcHitInfo(new Point(arg.X, arg.Y));//获取坐标点
            if (hitInfo.RowHandle >= 0)
            {
                DataRow row = gridView1.GetDataRow(hitInfo.RowHandle);
                _list.Clear;
                _list.Add(row[0].ToString);
                gisResoureMonControl1.SetSelectResource(_list);
            }           
        }

15 、获取选中行的值

代码:

private void gridData_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
             _id = GWEntLib.Utilities.Mix.ConvertUtils.ToInt32(gridData.GetRowCellValu(e.FocusedRowHandle, "Id"));
             _emrFileReadList = EMRTemplateFileReadList.GetEMRTemplateFileReadList(_id);
            gridVersonData.DataSource = _emrFileReadList;
         
        }

响应事件:FocusedRowChanged

获取字段值:gridData.GetRowCellValue(e.FocusedRowHandle, "Id")

注意:FocusedRowChanged是Gridview的事件而不是gridControl的事件

gridControl与Gridview的区别:前者是容器,后者为视图

16、将GridView 列表表头固定,无Filter效果

17、DevExpress GridView 获取当前选中行的值。

1  int rowIndex = gridView1.FocusedRowHandle;
2  DataRow dr = gridView1.GetDataRow(rowIndex);
3  MessageBox.Show("课件 \"" + dr.ItemArray[0].ToString + "\" 下载成功");

本站文章除注明转载外,均为本站原创或翻译

相关文章

iOS开发生涯的初恋:详解Objective-C多项改进

CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿、参与内容翻译工作,或寻求近匠报道,请发送...

[三菱PLC] 用&quot;C语言&quot;玩转PLC,三菱PLC使用ST语言超详细教程

ST语言,全称为结构化文本(Structured Text),是一种高级编程语言,专为工业自动化和控制系统设计。我们学习PLC一般是用梯形图,梯形图学会后,学习SFC,但是我发现梯形图和SFC虽然简单...

Android主流UI开源库整理(android完整开源项目)

前言最近老大让我整理一份 Android主流UI开源库 的资料,以补充公司的Android知识库。由于对格式不做特别限制,于是打算用博客的形式记录下来,方便查看、防丢并且可以持续维护、不断更新。标题隐...

C语言进阶教程:线程同步:互斥锁、条件变量与信号量

在多线程编程中,线程同步是确保数据一致性和程序正确性的关键。当多个线程需要访问共享资源时,如果缺乏适当的同步机制,就可能导致竞态条件(Race Condition)、死锁(Deadlock)等问题。本...

Linux C++实现多线程同步的四种方式(超级详细)

背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题?通过多线程模拟多窗口售票为例:#include <iostream>#include<pthread.h>#inc...

聊聊并发编程: Lock(并发锁有哪些)

之前学习了如何使用synchronized关键字来实现同步访问,Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功...