Devexpress GridControl中combobox级联显示 z
http://minmin86121.blog.163.com/blog/static/4968115720143163533356/
在 使用GridControl时,可能会有需求要求某2列显示combobox控件,而且在选择第一列的值时,第2列绑定的数据源发生变化。当然这在其他地 方很容易实现,但是在gridcontrol的列中就不能用以往的思维方式进行了,因为在gridcontrol中,你只有选中这一列,它才会显示出该列 所绑定控件的特性,否则只是一个普通的lable。
基本思路:在点击第2列时才去获取第一列选中的值,然后根据该值查询出第2列的数据进行绑定。
方法/步骤
- 1
combobox 控件的创建,我是在CustomRowCellEditForEditing这个事件下处理的。(因为我所需要显示combobox的列是动态创建的,所 以需要这样创建,如果你是固定显示,直接绑定combobox点击事件就可以了。)在这个事件里面,还可以控制某一列不同行显示不同控件。(因为 Devexpress是只能设置某一列控件的属性的,不能精准到控制每个单元格中的控件)
private void gvwFetchData_CustomRowCellEditForEditing(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
{
DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;RepositoryItemComboBox cbx = new DevExpress.XtraEditors.Repository.RepositoryItemComboBox();
switch (e.Column.FieldName)
{
//case "DBConstructionID":
//cbx.Items.Clear();
// cbx.Items.AddRange(cbxConstructions.Select(c
=> new Models.ComboBoxItemTextValue<int>(c.FieldID,
c.FieldName)).ToList());
// cbx.SelectedValueChanged += new EventHandler(cbx_SelectedValueChanged);
// //e.RepositoryItem = cbx;
// gclDataOperate.RepositoryItems.Add(cbx);
// gvwFetchData.Columns["ConstructionName"].ColumnEdit = cbx;//break;
case "BuildingName"://获取该行楼盘id
string constructid = gvwFetchData.GetRowCellValue(e.RowHandle, "DBConstructionID").ToString();
//楼栋//根据楼盘查询楼栋的数据
IList<BLL.RealDataWeb.ComboBoxField>
cbxBuildings = matchData.GetBuilding(iCityID,
Convert.ToInt32(constructid));//给该行楼栋combobox绑定数据源
cbx.Items.Clear();
cbx.Items.AddRange(cbxBuildings.Select(b => new
Models.ComboBoxItemTextValue<int>(b.FieldID,
b.FieldName)).ToList());//combobox值改变后触发
cbx.SelectedValueChanged += new EventHandler(cbx_SelectedValueChanged);//下拉框选中值后,需要进行转换
cbx.ParseEditValue += new ConvertEditValueEventHandler(cbx_ParseEditValue);//指定该列控件
e.RepositoryItem = cbx;
break;
case "HouseName":
string BuindId = gvwFetchData.GetRowCellValue(e.RowHandle, "DBBuildingID").ToString();
//房号
IList<BLL.RealDataWeb.ComboBoxField> House = matchData.GetHouse(iCityID, Convert.ToInt32(BuindId));
cbx.Items.Clear();
cbx.Items.AddRange(House.Select(h => new
Models.ComboBoxItemTextValue<int>(h.FieldID,
h.FieldName)).ToList());
cbx.SelectedValueChanged += new EventHandler(cbx_SelectedValueChanged);
cbx.ParseEditValue += new ConvertEditValueEventHandler(cbx_ParseEditValue);
e.RepositoryItem = cbx;
break;
default: break;
}}

- 2
选择combobox的值时进行的处理。(例如选择楼盘后,将楼盘id存放在一隐藏列中,在点击楼栋时,获取该id,查询所需要的数据源,进行绑定)
private void cbx_SelectedValueChanged(object sender, EventArgs e)
{
BaseEdit edit = gvwFetchData.ActiveEditor;
//下拉框数据更改之后,改变级联下拉框数据
switch (gvwFetchData.FocusedColumn.FieldName)
{
//case "ConstructionName"://楼盘
//
gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBConstructionID"],
((ComboBoxItemTextValue<int>)edit.EditValue).SelectValue);
// gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["BuildingName"], "选择楼栋");
// gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBBuildingID"], 0);
// gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["HouseName"], "选择房屋");
// gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBHouseID"], 0);// break;
case "BuildingName"://楼栋
gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBBuildingID"],
((ComboBoxItemTextValue<int>)edit.EditValue).SelectValue);
gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBHouseName"], "选择房屋");
gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBHouseID"], 0);break;
case "HouseName"://房号
gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBHouseID"],
((ComboBoxItemTextValue<int>)edit.EditValue).SelectValue);
break;}


- 3
//grid中的下拉框必须要处理一下,不然会报(对象必须实现iconvertible)错误
private void cbx_ParseEditValue(object sender, ConvertEditValueEventArgs e)
{
e.Value = e.Value.ToString();
e.Handled = true;
}
Devexpress GridControl中combobox级联显示 z的更多相关文章
- 在DevExpress GridControl中添加进度条控件 z
首先可以使用 DevExpress GridControl 自带的进度条控件. 但是我要用一个方法来设置所有的单元格进度,而不是每个单元格都要设置一遍,同时我想要根据进度值不同,进度条显示不同的颜色. ...
- extjs中combobox默认显示第一个值
在进入页面时往往用户希望页面能够显示默认的内容,但是页面中会存在一些选项通过用户选择之后才会加载相应的内容.在这篇文章里面介绍了如何去设置页面中默认的内容,如combobox默认显示第一个值. 页面: ...
- Devexpress GridControl中 repositoryItemCheckEdit作为选择列以及作为显示列的使用方法
一.在gridcontrol列表控件中使用单选框作为选择列,这里有两种方式. 方式一:选择gridcontrol控件的Run Designer按钮,添加一列,设置该列的ColumnEdit为check ...
- 在DevExpress GridControl的一列中显示图片
作者:jiankunking 出处:http://blog.csdn.net/jiankunking 近期做项目的时候用到了将GridControl中一列设置为PictureEdit类型,然后通过这一 ...
- Devexpress GridControl z
http://minmin86121.blog.163.com/blog/static/4968115720144194923578/ 1 AllowNullInput=False; --Devexp ...
- DevExpress GridControl 显示外部图片
如果数据源中只包含图片的链接,如何在DevExpress GridControl的一列中显示外部图片? 要实现该功能,可通过非绑定列的方式来实现.具体实现方法如下: 1. 创建了一个非绑定列并设 ...
- winform中ComboBox实现text和value,使显示和值分开,重写text和value属性
winform的ComboBox中只能赋值text,显示和值是一样的,很多时候不能满足根本需要,熟悉B/S开发的coder最常用的就是text和value分开的,而且web下DropDownList本 ...
- DevExpress控件GridControl中的布局详解 【转】
DevExpress控件GridControl中的布局详解 [转] 2012-10-24 13:27:28| 分类: devexpress | 标签:devexpress |举报|字号 订阅 ...
- WPF界面开发:DevExpress WPF在GridControl中固定行时处理时刻
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
随机推荐
- POJ 2029 Get Many Persimmon Trees(DP||二维树状数组)
题目链接 题意 : 给你每个柿子树的位置,给你已知长宽的矩形,让这个矩形包含最多的柿子树.输出数目 思路 :数据不是很大,暴力一下就行,也可以用二维树状数组来做. #include <stdio ...
- hdu 4473 Exam 数学
思路: 将条件转化为满足abc<=n的abc的数目. 1.3个数相等时,为 A; 2.有2个数相等时,为 B; 3.都不相等时,为 C. 则结果为A+3*B+6*C. 代码如下: #includ ...
- lintcode: 有效的括号序列
题目: 有效的括号序列 给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and']', 判定是否是有效的括号序列. 样例 括号必须依照 "() ...
- 如何在服务(Service)程序中显示对话框
原文:http://www.vckbase.com/index.php/wv/94 服务程序(Service)一般是不能和用户进行交互的,所以他一般是不能显示窗口的.要和用户进行交互(如显示窗口),我 ...
- TCL语言笔记:TCL中的String命令
一.介绍 字符串是 Tcl 中的基本数据类型,所以有大量的字符串操作命令.一个比较重要的问题就是模式匹配,通过模式匹配将字符串与指定的模式(格式)相匹配来进行字符串的比较.搜索等操作. 二.strin ...
- shell编程基础(2)---&&与||
shell 编程重要的应用就是管理系统,对于管理系统中成千上万的程序而言,查询某个文件名是否存在,并且获取该文件名所指代文件基本信息是系统管理员的基本任务.shell命令可以很轻松的完成这项任务. # ...
- Tomcat目录介绍以及运行时寻找class的顺序
来自:http://blog.csdn.net/lihai211/article/details/6651977 Tomcat下的文件目录 /bin:存放启动和关闭tomcat的脚本文件: /conf ...
- [leetcode] Path sum路径之和
要求给定树,与路径和,判断是否存在从跟到叶子之和为给定值的路径.比如下图中,给定路径之和为22,存在路径<5,4,11,2>,因此返回true;否则返回false. 5 / \ 4 8 / ...
- MFC中快速应用OpenCV教程
论坛上看到非常经典的VS2008 + OpenCV 2.0下的配置过程: (这里用的是opencv2.0) 1. 文件 | 项目 | MFC | MFC应用程序 |(新名称如MFCtest)|next ...
- px,dp,sp单位转换工具类
在layout中使用dp 在代码中getWidth系列得到的是px 设置字体大小时使用的是sp /** * Android大小单位转换工具类 */ public class PxDpSpUtil { ...