本文是系列文章,陆续发表于电脑编程技巧与维护杂志。

DevExpres产品是全球享有极高声誉的一流控件套包产品!国内典型用户包括:用友、金蝶、神州数码、工信部、中国石化、汉王科技等众多大中型科技型企业。它功能强大、界面美观,是.NET基础控件扩展包。可以让您快速开发出完美、强大的应用程序。而且使用起来也很方便,容易上手。美中不足的是、该控件包自带的演示中、没有运行时配置(动态设置)控件属性的介绍,这对于很多软件开发工作来说,很不方便,本人结合自己教学开发实例,在这里就相关控件的使用做一介绍,希望对读者朋友能够有所助益。

开发环境:VS2008 C#,Access,DevExpress 控件包 V9.1.4。

示例软件运行环境:.netframework2.0,windows xp/windows2003/windows7。

要明白如何动态设置XtraGridView的数据列,我们首先需要了解它都需要哪些属性被设置了才能正确应用。我们在设计期界面中随便拉一个XtraGrid控件到空白窗体,然后点击XtraGrid控件的RunDesigner按钮,之后点击 Columns选项卡,再点击 Add按钮添加一个表格列(gridColumn1),之后选中我们刚刚添加的gridColumn1,在窗口的右侧我们看到这个表格列的各种属性。

我们的目标是设置表格列能够显示不同的编辑控件,请留意这样一个属性:ColumnEdit,点击右侧的下拉按钮,我们看到有这样的一个窗口列出了所有可用的编辑控件列表,如图一所示:

这里我们选择ComboBoxEdit控件作为示例,其他控件类同。

当我们选择了ComboBoxEidt控件(下拉列表)以后,请注意实际显示的名称是:RepositoryItemComboBox。这是因为、DevExpress的控件包中,对于ColumnEdit控件进行了一些列的封装操作以便基础控件能够很好地应用在GridVieww中。封装后的ComboBox控件的名字就是RepositoryItemComboBox。类似的还有其他多种控件,读者朋友们可一一尝试着看看、或者查看示例项目的源码(DevControlpractice.LFH.Function.FuncGridControl第183行)。

我们知道、对于下拉列表控件,主要的工作就是要设置下拉的列表信息,继续向下查看它的属性,我们留意到这样一个属性:Items。点击、我们看到下面这样一个窗口,如图2所示。

好了,至此、我们明白:如果要添加一个下拉列表作为表格列的编辑控件,需要做这样几个动作:

1、  添加表格列到表格中去;

2、  设置表格列的属性:可见与否、是否可写/只读;

3、  添加表格列的编辑控件;

4、  设置编辑控件的相关属性:编辑控件类型,编辑控件的各种属性如列表值、查询值等。

既然、我们设置一个表格需要知道表格列的这些属性,那么我们可以在设计之前就先确定这些属性,并把它们存放在一个地方去,从而形成我们的数据字典信息(关于数据字典、感兴趣的朋友可以查阅相关资料、这里我们不再多说)。

这里我们设计一个表格来存放我们需要的各种相关信息:如图:

这样做的好处是显而易见的:我们可以很直观地对表格各个数据列的呈现形式进行设置、查看;运行过程中如果需要修改,那么我们只需要调整这里的设置就可以立刻看到执行的效果而无需再次进行任何编码处理。

有了上面数据列的信息设置、接下来我们就尝试用代码实现上面这些工作,从而使得我们能够很好地在运行期间控制表格的列属性。

代码实现

1、要添加表格列到表格中,我们用如下代码:

DevExpress.XtraGrid.Columns.GridColumn gcol = new DevExpress.XtraGrid.Columns.GridColumn();//创建一个新的表格列

(gview as DevExpress.XtraGrid.Views.Card.CardView).Columns.Add(gcol);//把新创建的表格列添加到表格中去。这里要切记:一定要在创建之后立刻加入到表格中去,然后再去设置它的相关属性,否则设置的各种属性都无法呈现出来。

2、设置表格列的属性:

gcol.Caption = dt.Rows[i]["FieldDescribe"].ToString();//设置列的描述文字;

gcol.Name = "Col_" + dt.Rows[i]["FieldName"].ToString();//设置列名称、这样才能把数据源中相应列的数据显示在GridView中;

gcol.MinWidth = 60;//设置默认列宽,这样做是避免数据字典中未设置列宽时导致列宽过小的现象;

try {

gcol.Width = Convert.ToInt32(dt.Rows[i]["Width"].ToString());//设置列宽为字典中设置的宽度;

if (gcol.Width <= 20) gcol.BestFit();//如果列宽过小、则设置为自适应宽度。

}

catch {

col.BestFit();

}

gcol.CustomizationCaption = "自定义";

DevExpress.XtraEditors.Repository.RepositoryItem ColEditor =

GetDevExpressGridColumnType(dt.Rows[i]["ControlName"].ToString());//根据字典设置信息设置列的编辑控件

gcol.ColumnEdit = ColEditor;//注意、要先把控件设置为列的编辑控件,然后才能进行下面的具体属性设置、否则设置无效。

//if (gcol.Width <= 50) gcol.BestFit();

gcol.ColumnEditName = "Edit_" + dt.Rows[i]["FieldName"].ToString();

gcol.FieldName = dt.Rows[i]["FieldName"].ToString();

//************设置可见属性

if ((dt.Rows[i]["SysIsVisible"].ToString()== "True")) gcol.Visible = true;

else gcol.Visible = false;

3、针对表格列的编辑控件ComboBox控件的属性进行设置:

if (dt.Rows[i]["ControlName"].ToString() == "ComboBox") {

DevExpress.XtraEditors.Repository.RepositoryItemComboBox cb = gcol.ColumnEdit as DevExpress.XtraEditors.Repository.RepositoryItemComboBox;

cb.TextEditStyle = TextEditStyles.DisableTextEditor;

接下来我们设置表格列的只读属性:

设置宽度:

#region 设置宽度

int ColumnWidth = 0;

try {

ColumnWidth = Convert.ToInt32(dt.Rows[i]["Width"].ToString());

}

catch {

ColumnWidth = 0;

}

if (myCol == null) continue;

else {

if (ColumnWidth == 0) myCol.BestFit();

else myCol.Width = ColumnWidth;

}

#endregion

好了、至此,我们已经根据我们在数据字典中设置的信息,对表格中各个数据列的展现形式进行了设置,运行程序就看到效果了,如图4所示:

示例代码下载:

DevExpres表格控件运行时动态设置表格列的更多相关文章

  1. DevExpres.XtraLayout控件运行时动态设置数据项

    问题分析: 通常.我们使用XtraLayout控件,是需要做以下的几个步骤来实现的: 1.  在窗体上拖拉一个 LayoutControl控件,设置它的填充属性: 2.  拖拉一些常规编辑控件到Lay ...

  2. JMeter非GUI方式运行时动态设置线程组及传参

    http://blog.csdn.net/selingchen/article/details/48106517 在使用JMeter进行性能测试自动化时,可能会有如下需求: 1.指定运行多少线程,指定 ...

  3. JMeter命令行方式运行时动态设置线程数及其他属性(动态传参)

    在使用JMeter进行性能测试时,以下情况经常出现: 1.测试过程中,指定运行的线程数.指定运行循环次数不断改变: 2.访问的目标地址发生改变,端口发生改变,需要改写脚本. 上面的问题在GUI中,直接 ...

  4. qtp 自动化测试--点滴 菜单没有了,有些控件运行时找不到

    test项目页签下-没有了 菜单栏:file edit view insert 看不到了 1 解决:在startpage标签下-tool-option-点击 restore layout-确定 2 菜 ...

  5. 给uniGUI的表格控件uniDBGrid加上记录序号的列

    uniDBGrid使用起来还是很方便的,但就是没有显示记录序号的功能,必须自己加,参照老外给的解决方案如下: 方案1: 1- 在UniDBGrid建一个第一列 (列的名字起“NO”) 2- 在 Uni ...

  6. 给表格控件DBGrid加上记录序号的列

    DBGrid使用起来还是很方便的,但就是没有显示记录序号的功能,必须自己加,参照老外给的解决方案如下: 方案1: 1- 在DBGrid建一个第一列 (列的名字起“NO”) 2- 在DBGrid事件 D ...

  7. QRowTable表格控件-支持hover整行、checked整行、指定列排序等

    目录 一.开心一刻 二.嘴一嘴 三.效果展示 四.浅谈实现 五.自定义数据源 1.data函数 2.flags函数 六.自定义视图 1.目的 2.问题分析 七.测试 八.相关文章 原文链接:QRowT ...

  8. 最好的Angular2表格控件

    现在市面上有大量的JavaScript数据表格控件,包括开源的第三方的和自产自销的.可以说Wijmo的Flexgrid是目前适应Angular 2的最好的表格控件. Angular 2数据表格基本要求 ...

  9. 数据表格控件 DataGridControl

    数据表格控件 书154页 <?xml version="1.0" encoding="utf-8"?> <s:Application xmln ...

随机推荐

  1. 编写一个jsp页面,输出九九乘法表。

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  2. python调用系统命令 shell命令

    使用python调用系统命令,基本有3种选择: 1. 使用os模块的system方法 import os os.system('ls') 2. 使用os模块的popen方法 import os os. ...

  3. 转自微软内部资料:编写高性能 Web 应用程序的 10 个技巧

    编写高性能 Web 应用程序的 10 个技巧 转自微软资料数据层性能技巧 1 — 返回多个结果集技巧 2 — 分页的数据访问技巧 3 — 连接池技巧 4 — ASP.NET 缓存 API技巧 5 — ...

  4. HW5.3

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  5. 判断html中的滚动条

    在工作中需要调整jqgrid的列宽,但是不希望有横向滚动条,因为是固定的列宽,当显示区域缩小后,数据会出现竖型滚动条 这个时候需要判断竖型滚动条是否存在进行列宽的调整. 自己调查了一下,发现滚动条可以 ...

  6. Win8关机 一直重启的问题 解决方案-摘自网络

    win8关机时自动重启的解决方法:关闭快递启动,默认是启动的,到控制面板 – 电源选项 – 选择电源按钮的功能 – 更改当前不可用的设置 – 关机设置 – 把勾去掉 关闭快速启动.这样就不会关机一直重 ...

  7. iOS 极光推送

    1.关于推送的几个证书.http://www.mobile-open.com/2016/931624.html 进入开发者中心:https://developer.apple.com/account/ ...

  8. HP QC(Quality Center)在Windows 7 IE8 IE9下不能工作解决方案

    HP QC(Quantity Center)是一款不错的测试管理工具,公司的操作系统Windows 7登录到QC Server的Quality Center和Addin页面,客户端组件不能正常下载,从 ...

  9. C#.bat文件清理工程目录

    另外一种方法是自己写一个bat文件来清理,非常方便,下面是自己写的验证过比较好用的方法. bat文件内容如下: echo 正在清理VS2010工程中不需要的文件 echo 请确保本文件放置在工程目录之 ...

  10. Join-Path(拼接路径)

    $a="d:" $a="d:\ab" $b="abcd" $c="m.txt" @($a,$b,$c) -join '\ ...