DevExpress GridContril

1.gridView 奇行与偶行交替变色

this.gridView1.OptionsView.EnableAppearanceEvenRow = true;

this.gridView1.OptionsView.EnableAppearanceOddRow = true;

this.gridView1.Appearance.EvenRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));

this.gridView1.Appearance.EvenRow.Options.UseBackColor = true;

this.gridView1.Appearance.OddRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));

this.gridView1.Appearance.OddRow.Options.UseBackColor = true;

2.girdView在第一列显示行号

//调整第一列的宽度

this.gridView1.IndicatorWidth = 40;

//添加监听事件

this.gridView1.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(this.gridView1_CustomDrawRowIndicator);

//在非类里这段代码

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

...{

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

...{

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

}

}

3.

GridControl 選中某列進行排序時,怎麼能讓那列高亮顯示

winform:

在gridView1的"EndSorting"事件中加入以下代碼:

private void gridView1_EndSorting(object sender, EventArgs e)

...{

Color clr = gridView1.Appearance.Row.BackColor;

foreach (DevExpress.XtraGrid.Columns.GridColumn dc in gridView1.Columns)

...{

if (dc.VisibleIndex == gridView1.SortedColumns[0].VisibleIndex)

...{

dc.AppearanceCell.BackColor = Color.Red;

}

else

...{

dc.AppearanceCell.BackColor = clr;

}

}

}

webfrom:

在DataGrid的SortCommand事件加入以下代碼:

其中dg是DataGrid的實例,e是SortCommand事件傳入的DataGridSortCommandEventArgs類型參數

foreach(DataGridColumn dgc in dg.Columns)

...{

if (dgc.SortExpression == e.SortExpression)

...{

dgc.ItemStyle.BackColor = Color.Red;

}

else

...{

dgc.ItemStyle.BackColor = Color.White;

}

}

4.

去掉GridControl控件上面的

Drag a column header here to group by that column

Options\OptionsView\ShowGroupPanel      True----->False

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hlzhs/archive/2008/05/19/2459118.aspx

public Form2()

{

InitializeComponent();

//不显示内置的导航条。

gc1.UseEmbeddedNavigator = false;

//不显示分组的面板

gv1.OptionsView.ShowGroupPanel = false;

gv2.OptionsView.ShowGroupPanel = false;

//自动改变行高适应内容

gv1.OptionsView.RowAutoHeight = true;

gv2.OptionsView.RowAutoHeight = true;

//允许自动合并单元格

gv1.OptionsView.AllowCellMerge = true;

//如果主从表中,没有找到从表内容也要显示(默认是不显示的)

gv1.OptionsDetail.AllowExpandEmptyDetails = true;

//显示自动筛选行(效果跟Excel的自动筛选差不多)

gv2.OptionsView.ShowAutoFilterRow = true;

//使得GridView不能编辑

gv1.OptionsBehavior.Editable = false;

gv2.OptionsBehavior.Editable = false;

//内置编辑器显示的模式

gv1.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click;

//主从表显示的功能是否可用

//gv1.OptionsDetail.EnableMasterViewMode = false;

//如果显示了主从表,每点开个加号,就会显示一个Tabs,里面往往显示了两个面板。

//事实上没必要这样干的。一般选择关闭。关闭的对象是主GridView的此项属性。

gv1.OptionsDetail.ShowDetailTabs = false;

}

private void btnExit_Click(object sender, EventArgs e)

{

this.Close();

}

private void btnOk_Click(object sender, EventArgs e)

{

//设置连接字符串

DbHelperSQL.ConnectionString = DbHelperSQL.CreateConnectionString(@"BUDDHAS\SQLEXPRESS", "sa", "00000", "RTDMES");

DataSet ds = new DataSet();

//父GridView的数据

string sql = "select sc_prno,sc_prna from mespb04h";

DbHelperSQL.QueryD(sql,ds,"main");

//子GridView的数据

sql = "select pa_name,pa_no,sc_prno from mespb09h";

DbHelperSQL.QueryD(sql,ds,"son");

//这个是显示主从表的关键,一、GridControl通过检查DataSet.Relations的内容来分析数据

//二、关键名必须与设计GridView的层级关系的level name相同,否则,结果在意料之外。

DataRelation relation = new DataRelation("aa",

ds.Tables["main"].Columns["sc_prno"],

ds.Tables["son"].Columns["sc_prno"]);

ds.Relations.Add(relation);

//这也是一个关键,不能直接设为:ds,必须指明到表。

gc1.DataSource = ds.Tables["main"];

}

上面的代码是显示一个主从表。显示主从表有些技巧。文档中还没有说出来,俺摸索了一个晚上才搞出来。像上面看到的,事实上很简单。

上面DbHelperSQL是我从CodeMatic 2.0中搞出来的,我自己修改了一下。

上面代码的效果图如下:

对于GridView,我有两大疑问:

一、显示主从表,这个解决了。

二、分组显示,这是报表中经常要用到的,GridView的解决方案很简捷,只需将相应列的GroupIndex属性设一下就成了:

在gridcontrol上击右键,选run designer进入设计模式。在columns栏内点retrieve fields将数据源中所有字段导入进来。

点需要分组的字段,在其属性栏的groupindex依次设为0,1..,在不需要分组的字段上保持-1不变。

进入feature browse/summary /group sammary /summary items中增加要分组进行统计的字段。这里要设其fieldname字段名,showingroupcolumnfooter 显示在哪一栏位,sammarytype显示分组后统计的字段是进行sum(求和,求平均,最大值,最小值等)

在grouping /behavior /grneral /可设两个属性

autoexpandallgroups 设为true时将所有分组展开,反之折叠。

showgroupedcolumns是否在网格是显示你分组依据的哪些字段,false为不显示

同样在feature browse/summary /total sammary 这些不是针对分组,而是针对所有行。在summaryitem中对要处理的列进行设置,主要设置需要处理列的column,summarytype.

当然设好后要将optionview的showfooter属性设为true,表格底部会出现一summary行。

补:另有三个属性需要用,我们查询的结果一般是只读的,并且对每一个单元格最好无焦点,故可同时选所有字段,设allowedit为false;allowfocus为false;readonly为true;

为XtraGrid的GridView加行号。示例代码如下:

//设置行指示器的宽度(行指示器就是最左边那列什么都不显示的列)

//默认情况下,如果要在里面显示行号的话,宽度会不足,数字显示不清晰

//所以要改一下宽度

gv1.IndicatorWidth = 20;

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

{

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

{

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

}

}

效果图如下:

常用代码:

//添加分组统计字段

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;

来自 <http://www.cnblogs.com/xiaofengfeng/archive/2011/05/04/2037024.html>

时间: 2024-10-09 11:37:59

DevExpress GridContril的相关文章

DevExpress:范围选择控件RangeControl

本文为我的.NET控件库DevExpress使用笔记,我的DevExpress版本为13.1 1.控件类型全称:DevExpress.XtraEditors.RangeControl 2.控件所在程序集:DevExpress.XtraEditors.v13.1.dll 3.工具箱内分类:DX.13.1: Common Controls 4.控件样式截图 5.一个新的RangeControl被放置到窗体内时,里面会有一行字"Please add client to RangeControl&quo

Saving Grid(Dev Express) Layout with MVVM(code from DevExpress support)

<Window x:Class="WPFGridTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xam

Devexpress VCL Build v2014 vol 14.2.5 发布

和xe8 几乎同一天出来,但是目前官方不支持xe8. The following sections list all minor and major changes in DevExpress VCL 14.2.5. Note that products, controls and libraries which aren't mentioned in the list below are included in the unified installer for compatibility,

[DevExpress]GridControl 根据RowIndex和VisibleColumnsIndex来获取单元格值

关键代码: /// <summary> /// 根据rowIndex和visibleColumnsIndex来获取单元格可见值 /// </summary> /// <param name="view">GridView</param> /// <param name="rowIndex">rowIndex</param> /// <param name="visibleColu

[WinForm][DevExpress]自定义GridControl中按钮文字内容

最近项目开发中,使用到了GridControl的FindPanel,这样可以很好的对数据进行筛选,可是所展现的按钮文字是英文,如图: 那怎么定义两个按钮问题,以符合项目需求了?经过一番搜索发现利用GridLocalizer可以很好实现: 核心代码: public class BuilderGridLocalizer : GridLocalizer { Dictionary<GridStringId, string> CusLocalizedKeyValue = null; /// <su

在DevExpress程序中使用GridView直接录入数据的时候,增加列表选择的功能

在我上篇随笔<在DevExpress程序中使用Winform分页控件直接录入数据并保存>中介绍了在GridView以及在其封装的分页控件上做数据的直接录入的处理,介绍情况下数据的保存和校验等操作,不过还没有涉及到数据列表选择的这种方式,而这种在项目应用也是比较广泛的一种输入方式.本篇随笔继续探讨在GridView上直接录入数据,并增加字典选择列表的功能. 1.GridView直接录入数据回顾 在之前整合的数据录入案例里面,我们可以看到可以在列表里面直接录入速度的便捷性,如下所示. 1)直接在G

在DevExpress程序中使用Winform分页控件直接录入数据并保存

一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数据,这种对于字段比较少,而且内容相对比较简单的情况下,效率是比较高的一种输入方式.本篇随笔主要介绍在DevExpress程序中使用GridView直接录入数据并保存的实现,以及使用Winform分页控件来进行数据直接录入的实现操作. 1.在GridView上展示数据 在GridView上展示数据,只

如何修改全部DevExpress控件的字体

引用:https://www.devexpress.com/Support/Center/Question/Details/A2761 You can change the default font used by DevExpress WindowsForms controls with the following static properties: DevExpress.XtraEditors.WindowsFormsSettings.DefaultFont - Specifies the

实现DevExpress GridControl 只有鼠标双击后才进行修改数据

1. 实现DevExpress GridControl 只有鼠标双击后才进行修改数据:修改GridView.OptionsBehavior.EditorShowMode属性为Click 2. 实现DevExpress GridControl 只有鼠标双击后才进行修改数据:修改GridView.OptionsBehavior.EditorShowMode属性为MouseDownFocused 然后实现下面代码: private void gridView1_MouseDown(object sen