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

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. htmlparser 精确提取的一些代码

    一. ConnectionManager manager = Page.getConnectionManager(); Parser parser = new Parser(manager .open ...

  2. 面试准备--struts2.x

    对象解析: 1.HttpServletRequest对象是tomcat对用户请求信息的封装,该对象提供了多个方法可以获取用户的请求信息. 2.ActionContextCleanUP是一个可选过滤器, ...

  3. 在Eclipse中使用Github(EGit)

    安装配置EGit 1. 安装Windows版的Git,登陆Github账号,登陆成功后会自动在本地和Github配置好密钥 2. 在Eclipse中安装EGit,地址http://download.e ...

  4. 安装solr

    安装之前先关闭防火墙.安装好jdk和tomcat 1.启动tomcat的命令为:apache-tomcat-7.0.61/bin/startup.sh 2.拷贝solr目录下example/webap ...

  5. IIS7 性能(内存、CPU、当前请求耗时)监测

    程序上线了,但运行过程中如果发现很CPU.内存异常,某些操作耗时,如何在生产环境中监测并查明原因呢,有以下几种工具(方式): 1.NProfiler,这是一个商业软件,有试用周期,可以监测包括Winf ...

  6. 问题记录:spark读取hdfs文件出错

    错误信息: scala> val file = sc.textFile("hdfs://kit-b5:9000/input/README.txt") 13/10/29 16: ...

  7. linux重定向总结:如何将shell命令的输出信息自动输出到文件中保存

    在做批量实验室,例如跑批量MR的作业,我们会写好shell脚本,然后启动脚本,等所有作业执行完再去看结果,但是这些执行时的信息如何保存下来到文件中呢?下面这个命令可以完成这个任务. sh batchj ...

  8. POJ1159 - Palindrome(区间DP)

    题目大意 给定一个字符串S,问最少插入多少个字符可以使字符串S变为回文串 题解 用dp[i][j]表示把字符串s[i-j]变为回文串需要插入的最小字符数 如果s[i]==s[j]那么dp[i][j]= ...

  9. Dynamices CRM JS 类库 神器 XrmServiceToolkit - A Microsoft Dynamics CRM 2011 & CRM 2013 JavaScript Library

    XrmServiceToolkit - A Microsoft Dynamics CRM 2011 & CRM 2013 JavaScript Library http://xrmservic ...

  10. 动态规划之HDU水题

    做水题的感觉真好系列 HDU 2084 数塔 1: 12: 1 23: 1 2 34: 1 2 3 45: 1 2 3 4 5 dp[i][j]第i行第j个数取得的最大值dp[i][j] = max( ...