码迷,mamicode.com
首页 > 其他好文 > 详细

基于DevExpress开发的GridView如何实现某一列的一行让用户可以从下列列表选择选项

时间:2014-07-31 23:39:00      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   java   使用   os   2014   

在很多DevExpress的使用例子里面,我们可以看到,基于GridView实现的不同控件展示的时候,每一列的控件类型都是一样的,如果我要某一列的一行让用户可以从下列列表选择选项,而其他行不可选择,那我们可以实现这种效果吗,应该如何实现?

1、GridView实现的显示效果

例如下面的效果就是我希望达到的,在第一行的流程处理人列允许用户选择,其他行禁止用户选择。

bubuko.com,布布扣

单用户单击第一行的“流程处理人”列的时候,弹出一个列表供用户选择,选择后显示具体的人员的姓名即可。

bubuko.com,布布扣

2、功能实现具体步骤

实现上面所说的功能,最主要就是创建两个In-place(嵌入)的编辑器,一个用于特定行的编辑,一个用于其他行的编辑。如下所示。

bubuko.com,布布扣

从上面可以看到,我添加了一个LookupEdit控件和一个TextEdit的控件,分别用来操作不同的行列内容。

然后就是需要实现gridView的单元格自定义编辑事件,如下所示。

            this.gridView1.CustomRowCellEdit += new DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventHandler(this.gridView1_CustomRowCellEdit);

然后在事件实现里面,对不同的行,指定不同的编辑器,如下代码所示。

bubuko.com,布布扣
        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;
                }
            }
        }
bubuko.com,布布扣

最后,还需要实现这两个内嵌的编辑控件的ParseValue事件,如下所示。

            this.repositorytxtProcUser.ParseEditValue += new DevExpress.XtraEditors.Controls.ConvertEditValueEventHandler(repositorytxtProcUser_ParseEditValue);
            this.repositoryddlProcUser.ParseEditValue += new DevExpress.XtraEditors.Controls.ConvertEditValueEventHandler(repositoryProcUser_ParseEditValue);
bubuko.com,布布扣
        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;
                }
            }
        }
bubuko.com,布布扣

这样,我们就能实现上面所说的效果,可以在某行列里面显示下拉列表,其他的行列显示文本框,并且文本框不可以编辑的操作了。

bubuko.com,布布扣

通过以上的操作,我们还可以为某行列指定更多不同类型的内嵌编辑控件,从而丰富我们的列表单元格编辑操作

基于DevExpress开发的GridView如何实现某一列的一行让用户可以从下列列表选择选项,布布扣,bubuko.com

基于DevExpress开发的GridView如何实现某一列的一行让用户可以从下列列表选择选项

标签:style   blog   http   color   java   使用   os   2014   

原文地址:http://www.cnblogs.com/lwaixd/p/3883752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!