基于DevExpress开发的GridView如何实现一列显示不同的控件类型
2014-01-20 11:41
555 查看
在很多DevExpress的使用例子里面,我们可以看到,基于GridView实现的不同控件展示的时候,每一列的控件类型都是一样的,如果我要某一列的一行让用户可以从下列列表选择选项,而其他行不可选择,那我们可以实现这种效果吗,应该如何实现?
单用户单击第一行的“流程处理人”列的时候,弹出一个列表供用户选择,选择后显示具体的人员的姓名即可。
从上面可以看到,我添加了一个LookupEdit控件和一个TextEdit的控件,分别用来操作不同的行列内容。
然后就是需要实现gridView的单元格自定义编辑事件,如下所示。
然后在事件实现里面,对不同的行,指定不同的编辑器,如下代码所示。
最后,还需要实现这两个内嵌的编辑控件的ParseValue事件,如下所示。
这样,我们就能实现上面所说的效果,可以在某行列里面显示下拉列表,其他的行列显示文本框,并且文本框不可以编辑的操作了。
通过以上的操作,我们还可以为某行列指定更多不同类型的内嵌编辑控件,从而丰富我们的列表单元格编辑操作。
1、GridView实现的显示效果
例如下面的效果就是我希望达到的,在第一行的流程处理人列允许用户选择,其他行禁止用户选择。单用户单击第一行的“流程处理人”列的时候,弹出一个列表供用户选择,选择后显示具体的人员的姓名即可。
2、功能实现具体步骤
实现上面所说的功能,最主要就是创建两个In-place(嵌入)的编辑器,一个用于特定行的编辑,一个用于其他行的编辑。如下所示。从上面可以看到,我添加了一个LookupEdit控件和一个TextEdit的控件,分别用来操作不同的行列内容。
然后就是需要实现gridView的单元格自定义编辑事件,如下所示。
this.gridView1.CustomRowCellEdit += new DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventHandler(this.gridView1_CustomRowCellEdit);
然后在事件实现里面,对不同的行,指定不同的编辑器,如下代码所示。
private void gridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e) { if (e.Column.FieldName == "ProcUser") { if (e.RowHandle == 0) { e.RepositoryItem = this.repositoryddlProcUser; } else { e.RepositoryItem = this.repositorytxtProcUser; } } }
最后,还需要实现这两个内嵌的编辑控件的ParseValue事件,如下所示。
this.repositorytxtProcUser.ParseEditValue += new DevExpress.XtraEditors.Controls.ConvertEditValueEventHandler(repositorytxtProcUser_ParseEditValue); this.repositoryddlProcUser.ParseEditValue += new DevExpress.XtraEditors.Controls.ConvertEditValueEventHandler(repositoryProcUser_ParseEditValue);
void repositorytxtProcUser_ParseEditValue(object sender, DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e) { e.Value = "人员未定"; } void repositoryProcUser_ParseEditValue(object sender, DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e) { if (e.Value is String) { int result = 0; if (Int32.TryParse((String)e.Value, out result)) { e.Value = result; e.Handled = true; } } }
这样,我们就能实现上面所说的效果,可以在某行列里面显示下拉列表,其他的行列显示文本框,并且文本框不可以编辑的操作了。
通过以上的操作,我们还可以为某行列指定更多不同类型的内嵌编辑控件,从而丰富我们的列表单元格编辑操作。
相关文章推荐
- 如何实现:GridView 控件中显示的文本不自动换行,隐藏超出宽度部分wj-wangjun
- 如何使用GridView实现不同数量显示图片不同的大小
- 如何实现GridView控件分页显示数据
- 在winform开发中,将集合类型(ArrayList)邦定到控件上,实现集合与控件中显示的数据同步
- 实现DataGridView中同一列不同行控件类型的不同
- Android基于mAppWidget实现手绘地图(十三)–如何显示/隐藏任意类型的地图对象
- DevExpress.LookUpEdit控件实现自动搜索定位功能(定位和显示可是同一行不同列值)
- DevExpress GridControl同一列根据不同的数据类型加载不同的编辑控件
- 如何实现基于MFC对话框的PCL显示
- Android开发深化之关于自定义GridView控件的实现
- C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变
- Developer Express控件组合中的gridcontrol控件,如何自动显示每一列的序号?
- 如何实现textarea里的不同文本显示不同颜色
- [Win8]Windows8开发笔记(四):画刷介绍以及如何实现实现歌词动态变色显示
- 基于Skyline的TerraExplorer6.1.1如何通过二次开发实现矢量图层的空间查询和属性查询
- C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变(转)
- 如何让Gridview在没有数据的时候显示表头[没有使用SqlDataSource控件时]
- 华为如何实现基于Git的跨地域协同开发
- android实现界面左右滑动(GridView动态设置item,支持每个item按某个属性排序来显示在不同的界面)
- C#如何读取Excel表格数据并显示到GridView控件