DevExpress GridControl 总结

下面是笔者自己总结的使用 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

2

3

4

5

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按钮

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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  背景色

一、如何解决单击记录整行选中的问题

View->OptionsBehavior->EditorShowMode 设置为:Click

二、如何新增一条记录

(1)、gridView.AddNewRow()

(2)、实现gridView_InitNewRow事件

三、如何解决GridControl记录能获取而没有显示出来的问题

gridView.populateColumns();

四、如何让行只能选择而不能编辑(或编辑某一单元格)

(1)、View->OptionsBehavior->EditorShowMode 设置为:Click

(2)、View->OptionsBehavior->Editable 设置为:false

五、如何禁用GridControl中单击列弹出右键菜单

设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false

六、如何隐藏GridControl的GroupPanel表头

设置Run Design->OptionsView->ShowGroupPanel 设置为:false

七、如何禁用GridControl中列头的过滤器

过滤器如下图所示:

 

设置 Run Design->OptionsCustomization->AllowFilter 设置为:false

八、如何在查询得到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);
          }
     }
}

九、如何显示水平滚动条?

设置this.gridView.OptionsView.ColumnAutoWidth = false;

十、如何定位到第一条数据/记录?

设置 this.gridView.MoveFirst()

十一、如何定位到下一条数据/记录?

设置 this.gridView.MoveNext()

十二、如何定位到最后一条数据/记录?

设置 this.gridView.MoveLast()

十三、设置成一次选择一行,并且不能被编辑

this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
this.gridView1.OptionsBehavior.Editable = false;
this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;

十四、如何显示行号?

this.gridView1.IndicatorWidth = 40; 
//显示行的序号 
private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
{
     if (e.Info.IsRowIndicator && e.RowHandle>=0)
     {
          e.Info.DisplayText = (e.RowHandle + 1).ToString();
     }
}

十五、如何让各列头禁止移动?

设置gridView1.OptionsCustomization.AllowColumnMoving = false;

十六、如何让各列头禁止排序?

设置gridView1.OptionsCustomization.AllowSort = false;

十七、如何禁止各列头改变列宽?

设置gridView1.OptionsCustomization.AllowColumnResizing = false;

用代码:

 

//添加分组统计字段

gridView1.GroupSummary.Add(SummaryItemType.Count, "Product Name", gridView1.Columns["Product Name"]);

gridView1.GroupSummary.Add(SummaryItemType.Average, "Unit Price", gridView1.Columns["Unit Price"]);

 

//设置分组统计字段的显示格式

((GridSummaryItem)gridView1.GroupSummary[gridView1.GroupSummary.Count - 1]).DisplayFormat = "AVR={0:c}";

 

//设置分组字段

gridView1.Columns["Discontinued"].GroupIndex = 0;

 

//打开所有分组

gridView1.ExpandAllGroups();

 

//为控件画边框

ControlPaint.DrawBorder3D(e.Graphics,

                          r,

                          (e.Info.State == DevExpress.Utils.Drawing.ObjectState.Pressed ? Border3DStyle.SunkenOuter

 

: Border3DStyle.RaisedInner));

 

 

//焦点单元格的列

gridview1.FocusedColumn

 

//焦点单元格所在行的行号

gridview1.FocusedRowHandle

 

//焦点单元格的值

gridview1.FocusedValue

 

//指定单元格显示的字符串值

gridview1.GetRowCellDisplayText(int rowHandler,string feildName)

 

//指定单元格的值

gridview1.GetRowCellValue(int rowHandler,string feildName)

 

//设置焦点单元格所在行指定列的值

gridview1.SetFocusedRowCellValue(GridColumn col,object value)

 

//设置焦点单元格的值

gridview1.SetFocusedValue(object value)

 

//设置指定单元格的值

//有了这个函数,就可以手工创建行了。

gridview1.SetRowCellValue(int rowHandler,string feildName,object value)

gridview1.SetRowCellValue(int rowHandler,GridColumn col,object value)

 

//添加新行的方法

 

gv1.AddNewRow();

foreach (GridColumn col in gv1.Columns)

{

//用RowCount-1的办法是不行的

//gv1.SetRowCellValue(gv1.RowCount-1, col, "aaaaa");

gv1.SetRowCellValue(gv1.FocusedRowHandle, col, "aaaaa");

}

 

gv1.UpdateCurrentRow();

 

//根据绑定的数据源自动产生列

 

gv1.PopulateColumns();

 

//为列添加下拉列表(加其他类型如日期、UpDown同理)

RepositoryItemLookUpEdit ri = new RepositoryItemLookUpEdit();

//ri.PopupWidth = 200;

ri.DisplayMember = "sc_prna";

ri.ValueMember = "sc_prno";

DataTable dt1 = DbHelperSQL.QueryT("select sc_prno,sc_prna from mespb04h");

ri.DataSource = dt1;

gv1.Columns["sc_prno"].ColumnEdit = ri;

 

 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

 在事件中添加代码 :

1

2

3

4

5

6

7

8

9

10

11

12

13

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 、单元格双击响应 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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 、获取选中行的值

代码:

1

2

3

4

5

6

7

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

2

3

1  int rowIndex = gridView1.FocusedRowHandle;

2  DataRow dr = gridView1.GetDataRow(rowIndex);

3  MessageBox.Show("课件 \"" + dr.ItemArray[0].ToString() + "\" 下载成功");

出处http://www.cnblogs.com/Albin/

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值