103、GridControl中添加Button

RunDesigner,添加一列,设置对应字段FiledName,ColumnEdit选择ButtonEdit,此时默认风格像下拉框,需调整属性:

在In-placeEditor中,选择该控件,设置TextEditStyle为HideTextEditor

设置按钮上的预设图标:Buttons-Kind属性将默认的Ellipsis(省略号)设为Glyph(空白),同时将Caption设为需要显示的文字

此时按钮轮廓不明显,将appearance的ButonsStyle改成NoBorder

102、更改数据绑定后的列标题或隐藏列标题

更改:gdvPassbyArl.Columns["选择"].Caption="更改"; //但不能设为空为nul,无效

隐藏列标题:gdvPassbyArl.Columns["选择"].OptionsColumn.ShowCaption = false;

101、获取/设置某单元格内容:GetRowCellValue、SetRowCellValue(i, "选择", checkEdit1.Checked);

100、GridControl选中所有行

gdvPassbyArl.SelectRows(0,gdvPassbyArl.RowCount-1);//一句话选中所有行,或任意多行

gdvPassbyArl.SelectRow(10);//选中某行

DEV控件在工具箱中消失处理方法

开始-->程序-->Developer Express v2009 vol 3(依据版本不同)-->Components-->Tools-->ToolboxCreator

 

1、点击一行选择完整一行

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

Run Designer->View->OptionsSelection.EnableAppearanceFocusedCell = false;

2、设置行不可编辑

Run Designer->View->OptionsBehavior->Editable 设置为:false

但这样也无法拷贝数据了,最好是上面Editable保持true,设置:

Run Designer->View->OptionsBehavior->ReadOnly 设置为:true

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

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

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

4、隐藏GridControlGroupPanel表头

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

取消压缩表格在窗体内完整显示(不出现横向滚动条)

Run Design->OptionsView->OptionsView.ColumnAutoWidth = false;

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

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

OptionsView->ShowAutoFilterRow:true 显示顶端过滤行

6、如何在行头部显示行号?

this.gridView1.IndicatorWidth = 40;

private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)

{

  //最顶上一行显示总行数

  if ( e.Info.Kind == DevExpress.Utils.Drawing.IndicatorKind.Header ) 
            {
                e.Info.DisplayText = ((DevExpress.XtraGrid.Views.Grid.GridView)sender).DataRowCount.ToString();
            }

if (e.Info.IsRowIndicator && e.RowHandle>=0)

e.Info.DisplayText = (e.RowHandle + 1).ToString();
}

7、得到当前选定记录某字段的值

sValue= gridView1.GetDataRow(gridView1.FocusedRowHandle)[FieldName].ToString();

或string ss = gridView1.GetRowCellValue(0, gridView1.Columns[0]);

8、不显示MasterDetailView

gridView1.OptionsDetail.EnableMasterViewMode=false;

9、设某一列文字和标题居中显示

gridView1.Columns[0].AppearanceHeader.TextOptions.HAlignment =DevExpress.Utils.HorzAlignment.Center;

gridView1.Columns[0].AppearanceCell.TextOptions.HAlignment =DevExpress.Utils.HorzAlignment.Center;

10、去掉某一列上面的自动筛选功能(Filter)

gridView1.Columns[0].OptionsFilter.AllowAutoFilter = false;

gridView1.Columns[0].OptionsFilter.AllowFilter =false;

gridView1.Columns[0].OptionsFilter.ImmediateUpdateAutoFilter =false;

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

设置 gridView1.OptionsCustomization.AllowColumnMoving = false;

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

设置 gridView1.OptionsCustomization.AllowSort = false;

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

设置 gridView1.OptionsCustomization.AllowColumnResizing = false;

11、设置冻结列(左冻结)

gridView1.Columns[0].Fixed= DevExpress.XtraGrid.Columns.FixedStyle.Left;

12、得到/设置单元格数据

string ss=gridView1.GetRowCellDisplayText(0,gridView1.Columns[0]);

string ss = gridView1.GetRowCellValue(0, gridView1.Columns[0]);

13、设置列宽自动适应文字长短

gridView1.BestFitColumns();

gridView1.BestFitMaxRowCount = 500; //对行数过多时,避免调整时间过长,根据前多少行来判断每列最佳宽度

14、设置gridview控件的字体

designer-views-外观-appearance-row-font中设置

15、隐藏行头列

gdv_point.OptionsView.ShowIndicator = false; //取消行头列

16、更改某一行的颜色,添加事件

private void gdv_point_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)

{

DataRow dr = gdv_point.GetDataRow(e.RowHandle);

if (dr != null && e.RowHandle==2)

e.Appearance.ForeColor = Color.Red; //因为前面已设置了奇偶行背景色,所以这里如果再设置某行背景色无效

}

17、更改某一单元格颜色,添加事件

private void gdv_point_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)

{

if (e.RowHandle == 4 && e.Column.AbsoluteIndex == 4) //e.Column.FieldName == "FIR";

e.Appearance.ForeColor = Color.Green;

}

18、获取或设置某一单元格文字

DataRow dr = gdv_point.GetDataRow(gdv_point.FocusedRowHandle); //与DataTable的一样

dr[3] = "456";

 

19、设置奇偶行颜色后就不能再更改某行的背景色,解决方法,不设奇偶色,在RowStyle事件中绘制,同时设置某行颜色

private void gdv_point_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)

{

if (e.RowHandle < 0) return; //还未加载数据

if (e.RowHandle % 2 == 0)

e.Appearance.BackColor = Color.FromArgb(255, 255, 240); // 设置偶数行颜色

else

e.Appearance.BackColor = Color.FromArgb(255, 255, 255);  // 设置奇数行颜色默认也是白色 可以省略

if (gdv_point.GetDataRow(e.RowHandle)["当前状态"].ToString().Trim() != "")

e.Appearance.BackColor = Color.FromArgb(255, 0, 0);

}

20(2016.2.14情人节,初七)设置某行为顶端第一显示行,即视图滚动到指定行:TopRowIndex(没有下面的方法好)

int oldtop = parentFrm.gdv_point.TopRowIndex;//获取原来的最顶行

int oldfocusrow = parentFrm.gdv_point.FocusedRowHandle;

parentFrm.butquery_Click(null,null);//重新执行查询

parentFrm.gdv_point.TopRowIndex = oldtop;//将最顶行设回原来值,如果原来值超出总行数也不会报错,会将最顶行设为最大可能值。

parentFrm.gdv_point.FocusedRowHandle = oldfocusrow; //超出最大行数也不会报错

 

21、根据某cell的值使界面定位并高亮选择该行。LocateByDisplayText(小朱提供方法 2016.2.19

gdv_point.FocusedRowHandle = gdv_point.LocateByDisplayText(0, gdv_point.Columns["ID"], pid);

 

22、时间类型默认在gridview中只能显示年月日,如果要显示时分秒,需要在RowCellStyle事件中添加

if (e.Column.ColumnType.ToString() == "System.DateTime")

{

e.Column.DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss"; //MM和HH一定要大写

e.Column.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime; //这句必须要

//e.Column.DisplayFormat.FormatString = "{0:N2}"; //数字格式化

//e.Column.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;

}

23、整个gridview设为可编辑后,使符合某些条件的行或列不可编辑

private void gdv_pdfpnt_ShowingEditor(object sender, CancelEventArgs e)

{

if (gdv_pdfpnt.FocusedColumn.AbsoluteIndex == 1)

e.Cancel = true;

}

24、显示自动过滤行

OptionView:ShowAutoFilterRow              显示自动过滤行

25、让输入值自动大写

RepositoryItemTextEdit editor = (RepositoryItemTextEdit)gdc_pdfpnt.RepositoryItems.Add("TextEdit");

editor.CharacterCasing = CharacterCasing.Upper;

gdv_pdfpnt.Columns[3].ColumnEdit = editor;

26更换绑定的DataTable

gdv_pnt.Columns.Clear();

gdc_pnt.DataSource = dt;

gdv_pnt.RefreshData();

27、多选多行模式获取所有选择行

List<int> selrows = gdv_apoint.GetSelectedRows().ToList(); //多选

28 GridControl控件中显示自定义控件的方法//2016.4.16

添加MouseDown事件,与RowCellClick事件的区别在于RowCellClick只能处理可编辑Cell

private void gdv_pdfpnt_MouseDown(object sender, MouseEventArgs e)

{

DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hinfo = gridView1.CalcHitInfo(new Point(e.X, e.Y));

if (hinfo.InRowCell && e.Button == MouseButtons.Left && e.Clicks == 1)

{

gridView1.FocusedRowHandle = hinfo.RowHandle;

DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;

DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo viewinfo = view.GetViewInfo() as DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo;

DevExpress.XtraGrid.Views.Grid.ViewInfo.GridCellInfo df = viewinfo.GetGridCellInfo(hinfo);

Rectangle rct = df.Bounds;

simpleButton1.Bounds = new Rectangle(rct.Left + gridControl1.Left, rct.Top + gridControl1.Top, rct.Width, rct.Height);

}

//获取点击cell的位置并显示控件

GridView view = sender as GridView;

GridViewInfo viewInfo = view.GetViewInfo() as GridViewInfo;

GridHitInfo hitInfo = view.CalcHitInfo(e.Location);

if (hitInfo.InRowCell && hitInfo.Column.AbsoluteIndex == gdv_pdfpnt.Columns.Count - 1 && e.Button == MouseButtons.Left && e.Clicks == 1) //限制鼠标事件为左键单击

{

gdv_pdfpnt.FocusedRowHandle = hitInfo.RowHandle; //关键!触发此事件时,dev控件还没来得及将当前行切换到点击行,这里做强制切换,否则会出现混乱。

GridCellInfo cellInfo = viewInfo.GetGridCellInfo(hitInfo);

Rectangle rect = cellInfo.Bounds;

int left = gdc_pdfpnt.Left+rect.Left; //rect 只是客户区坐标,要转化为屏幕绝对坐标

int top = gdc_pdfpnt.Top+rect.Top+3;

uC_TypeSelector.Left = left;

uC_TypeSelector.Top = top;

uC_TypeSelector.Visible = true;

string val=gdv_pdfpnt.GetDataRow(hitInfo.RowHandle)[hitInfo.Column.AbsoluteIndex].ToString();

if (val != "") //设置弹出控件初始值

uC_TypeSelector.RefFormValue(val); //将cell值初始化类型选择框,每次改变uc控件值的同时,也会触发控件回调函数往该界面上写回值,所以这里其实还执行了一次界面赋值

else

uC_TypeSelector.RefFormValue("   ");

}

else

uC_TypeSelector.Visible = false;

}

29、自动添加行号的方法:2016.5.9

1、开启显示标记列 gdv_point.OptionsView.ShowIndicator = true;默认就是开的

2、设置标记列列宽

3、添加事件

private void gdv_pro_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)

{

//e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;

if (e.Info.IsRowIndicator)

{

if (e.RowHandle >= 0)

{

e.Info.DisplayText = (e.RowHandle + 1).ToString();

}

}

}

30、添加双击事件添加gdv_pro_MouseDown事件 2016.5.12

可以将gdv_point.OptionsBehavior.Editable = false;也可不设置

DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hInfo = gdv_pro.CalcHitInfo(new Point(e.X, e.Y));

if (hInfo.InRow && e.Button == MouseButtons.Left && e.Clicks == 2)

31、根据界面宽度自动设置列宽模式 2016.5.13

在界面或某控件的SizeChang事件中执行此函数

public static void BestFitGridViewColumnsWith( DevExpress.XtraGrid.Views.Grid.GridView gdv )

{

//先设置最小列宽

gdv.BestFitColumns();

//获取所有列总最小宽度

int tt = 0;

for (int i = 0; i < gdv.Columns.Count; i++)

tt += gdv.CalcColumnBestWidth(gdv.Columns[i]);

//如果有指示列,加上其宽度

if (gdv.OptionsView.ShowIndicator)

tt += gdv.IndicatorWidth;

//根据宽度调整列显示模式

if (tt < gdv.ViewRect.Width)

gdv.OptionsView.ColumnAutoWidth = true;

else

gdv.OptionsView.ColumnAutoWidth = false;

}

32、设置单元格中实现换行2016.9.1

首先,查询语句中用CHR(10)分行符连接显示内容,如:zx_org||CHR(10)||zx_cut 走向,或者在代码中用\r\n或\r或\n连接两string

绑定数据后用

DevExpress.XtraEditors.Repository.RepositoryItemMemoEdit x = new DevExpress.XtraEditors.Repository.RepositoryItemMemoEdit();

gdv_zxnotmatch.Columns["走向"].ColumnEdit = x;

gdv_zxnotmatch.OptionsView.RowAutoHeight = true;

可实现分行显示

33、单独设置某些cell的字体等风格在事件CustomDrawCell中实现2016.10.31

private void gdv_point_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
        {
            if(e.Column.Name=="col报告类型")
            {
                if (e.CellValue.ToString() == "△")
                    e.Appearance.Font = new Font("宋体", 9f);                   
            }           
        }

设置主表、从表嵌套显示,主表行前出现+号,点击显示满足关联关系的从表数据

1、在主view新添加一级level主,从视图分别为gridView1和gridView2

2、新建Dataset将主视图、从视图对应的两张datatable添加进去,并设置这两张表的公共字段建立关联,即主键和外键

3、将此Dataset的具有主键的Table赋给gridConcrol的DataSource即可

DataSet ds = new DataSet();

var t1 = DBFactorySingleton.GetInstance().Factory.GetDataTable(string.Format(@"select txt_name 名称, code_id 识别,significant_point_id ID from {0}.vor", AisLogical.dbuser)).Copy(); //加copy的原因是原datatable已经属于一个dataset

t1.TableName = "t1"; //如果不对table命名,两次添加的table都会叫默认的表名data,第二张表就添加不进此dataset

ds.Tables.Add(t1); //主表显示内容

var t2 = DBFactorySingleton.GetInstance().Factory.GetDataTable(string.Format(@"select significant_point_id ID, geo_lat 纬度,geo_long 经度,val_freq||uom_freq 频率,val_mag_var 磁差  from {0}.vor", AisLogical.dbuser)).Copy();

t2.TableName = "t2";

ds.Tables.Add(t2);//子表显示内容

////将子表与主表的公共字段作为主键和外键,目的为了建立关系,由主表带出子表

DataColumn keyColumn = ds.Tables["t1"].Columns["id"];

DataColumn foreignKeyColoumn = ds.Tables["t2"].Columns["id"];

//建立关系, 此关系名称NAIP会默认显示在子表表头,可通过设置主表的OptionsDetail.ShowDetailTabs = false;来隐藏名称

ds.Relations.Add("NAIP", keyColumn, foreignKeyColoumn);

gridControl1.DataSource = ds.Tables["t1"]; //将具有主键的datatable赋给整个控件的DataSource完成主、从表绑定

////////////////////////////////////////////////

//完全用代码实现Grid控件设置

#region DevGridControl控件设置

///////////////////////////////////////////////////////////////////////

//1添加行号

//gdv_point.IndicatorWidth = 50; //最好不要显示此列

//添加事件显示行号

//private void gdv_point_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)

//{

//        if (e.Info.IsRowIndicator && e.RowHandle>=0)

//            e.Info.DisplayText = (e.RowHandle + 1).ToString();

//        e.Info.ImageIndex = -1; //不显示小三角

//}

//2外观设置可设置自带的4种风格,可再做调整

gdc_point.LookAndFeel.UseDefaultLookAndFeel = false;

gdc_point.LookAndFeel.SkinName = "Caramel";

//gdc_point.LookAndFeel.SkinName = "Lilian";

//gdc_point.LookAndFeel.SkinName = "iMaginary";

//gdc_point.LookAndFeel.SkinName = "Money Twins";

gdv_point.OptionsView.EnableAppearanceOddRow = true;   // 允许设置奇数行

gdv_point.OptionsView.EnableAppearanceEvenRow = true;   // 允许设置偶数行

gdv_point.Appearance.OddRow.BackColor = Color.FromArgb(255, 255, 255);  // 设置奇数行颜色默认也是白色 可以省略

gdv_point.Appearance.EvenRow.BackColor = Color.FromArgb(255, 255, 240); // 设置偶数行颜色

gdv_point.Appearance.Row.Font = new System.Drawing.Font("微软雅黑", 10.5f); //表内字体

gdv_point.Appearance.HeaderPanel.Font = new System.Drawing.Font("仿宋", 13f, FontStyle.Bold);//表头字体

gdv_point.ColumnPanelRowHeight = 35; //表头面板高度

gdv_point.RowHeight = 30; //表格行高

gdv_point.Appearance.FocusedRow.BackColor = Color.FromArgb(255, 240, 151); //选中行背景色

gdv_point.Appearance.FocusedRow.ForeColor = Color.Black;  //选中行前景色

gdv_point.Appearance.HideSelectionRow.BackColor = Color.White; //失去焦点是选中行前景色

gdv_point.Appearance.HideSelectionRow.ForeColor = Color.Black;//失去焦点是选中行背景色

//3、行选模式

gdv_point.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click; //设置整行选择

gdv_point.OptionsBehavior.ReadOnly = true; //不可编辑

gdv_point.OptionsSelection.EnableAppearanceFocusedCell = false; //取消选中时单元格高亮

//4、操作

gdv_point.OptionsMenu.EnableColumnMenu = false; //禁用列名右键弹出菜单

gdv_point.OptionsMenu.EnableFooterMenu = false;//禁用脚注右键弹出菜单

gdv_point.OptionsView.ShowGroupPanel = false;//禁用拖表头group面板

//gdv_point.OptionsCustomization.AllowFilter = false; //禁用列头筛选

gdv_point.OptionsView.ColumnAutoWidth = false;//禁用自动列宽,恢复横向滚动条

//5、列宽优化

//每次绑定数据后要执行gdv_point.BestFitColumns(); 来优化每列宽度

gdv_point.BestFitMaxRowCount = 500; //根据前多少行来判断每列最佳宽度

gdv_point.OptionsDetail.ShowDetailTabs = false;//隐藏从表的表头标签

gdv_point.OptionsView.ShowIndicator = false; //取消行头列

#endregion

2016.1.19 DEV Express控件GirdControl使用的更多相关文章

  1. DEV Express控件VScorllBar控件使用

    今天使用VScorllBall控件做了个控制界面上下滑动的功能,网上也找了这方面的资料,大概综合借鉴了一下之后,搞了一个适合我自己的自定义功能控件. 下面话不多说,直接上代码. private voi ...

  2. 1 设置 dev express控件RepositoryItemLookUpEdit数据源的方法

    private void SetLookUpEditData(Type enumType, DevExpress.XtraEditors.Repository.RepositoryItemLookUp ...

  3. 评论:一套Developer Express控件包 For Delphi7

    http://www.2ccc.com/idea.asp?articleid=1675 (也可以查看盒子上这个帖子的内容) Developer Express Inc 系列控件组 for Delphi ...

  4. Dev系列控件的AJAX (转)

    介绍Dev系列控件在前台也就是客户端的一些常用方法介绍以及前后台异步通信的方法. 一.Dev Data Edit控件通用属性以及方法: 属性 1.GetEnabled():返回控件是否为可操作状态 2 ...

  5. dev的控件放在没有runat="server"的标签中,回调出现的问题

    dev的控件放在没有runat="server"的标签中,第一次回调是会刷新页面, 有runat="server"时不会刷新页面

  6. Developer Express控件gridcontrol中gridView的某一个单元格是否可以自由输入

    场景:在Developer Express控件gridcontrol中的gridView中,当医生开的临时医嘱的医嘱类型为"中草药","计价总量"单元格不可以自 ...

  7. ASP.NET Dev ASPxGridView控件使用 ASP.NET水晶报表打印

    1.ASPxGridView控件使用 2.ASP.NET水晶报表客户端打印 3.javascript打印 4.ASPxGridView根据Textbox查询 5. ASPxGridView 列宽 1. ...

  8. Dev系列控件的AJAX使用Demo

    一.Dev Data Edit控件通用属性以及方法: 属性 1.GetEnabled():返回控件是否为可操作状态 2.GetText():返回控件的Text的值 3.SetEnabled():设置控 ...

  9. 自动为DEV GridView控件添加SizeChanged事件

    实现gdv设置的抽象对象,不用每个gdv控件都添加sizechanged事件,只需执行gdc绑定sql函数,在其中会自动添加SizeChanged事件. //2016.5.13 by sngk //根 ...

随机推荐

  1. java深入探究09-Filter,Listener,国际化

    1.Filter过滤器 1)为是么有过滤器 开发项目中经常遇到直接登录主页面要判断用户是否合法,这类代码比较重复,可以通过过滤器来解决 2)过滤器原理生命周期 服务器创建过滤器对象->一个执行i ...

  2. java深入探究08-连接池,分页

    1.连接池 1)自定义连接池 思路:定义一个类Pool->添加4个属性(最大连接数,初始化连接数,当前连接数,用来存放连接对象的LinkList集合对象)->定义一个createConne ...

  3. maven 中pom.xml文件依赖包从本地加载如何配置?

    比如我现在有一个需求是:项目中要加载ueditor的jar架构包,并且用maven构建的项目 那么在pom.xml文件中如配置: 说明:${project.basedir} 是maven 自带(内置) ...

  4. MAC 系列 之XCode7.1 + HBuilder MUI 离线打包 ipa 上次application leader 问题:ERROR ITMS - 90534

    解决方法:这个原因 网上说法是 beta 测试版本:不过的确是beta版本(7.3 beta)打包的,所以我有下载了一个正式版本 7.1版本. 再次进行测试打包!

  5. 使用 Spring Boot 快速构建 Spring 框架应用

    Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架.有大量的企业应用基于 Spring 框架来开发.S ...

  6. jsp:tld标签

    z注意每个uri地址要保持统一 1.创建MytagPrinta.java文件 package cn.tag; import java.io.IOException; import javax.serv ...

  7. 08-THREE.JS 点面创建物体,克隆物体,多材质物体

    <!DOCTYPE html> <html> <head> <title></title> < <script src=&quo ...

  8. 30 python 并发编程之多线程

    一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 官网链接:https://docs.python ...

  9. 分布式_理论_02_Base 理论

    一.前言 五.参考资料 1.分布式理论(二)——Base 理论 2.分布式理论(二) - BASE理论

  10. [转]C++ 智能指针详解

    转自:http://blog.csdn.net/xt_xiaotian/article/details/5714477 C++ 智能指针详解 一.简介 由于 C++ 语言没有自动内存回收机制,程序员每 ...