zoukankan      html  css  js  c++  java
  • GridView 内部添加控件

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

    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;
                    }
                }
            }
    复制代码

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

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

  • 相关阅读:
    将Nginx添加到windows服务中
    springboot使用redis管理session
    GIT常用命令
    阻止360、谷歌浏览器表单自动填充
    谈谈对Spring IOC的理解
    同一个Nginx服务器同一端口配置多个代理服务
    LeetCode 653. Two Sum IV
    109. Convert Sorted List to Binary Search Tree(根据有序链表构造平衡的二叉查找树)
    108. Convert Sorted Array to Binary Search Tree(从有序数组中构造平衡的BST)
    LeetCode 236. Lowest Common Ancestor of a Binary Tree(二叉树求两点LCA)
  • 原文地址:https://www.cnblogs.com/liushunli/p/4188694.html
Copyright © 2011-2022 走看看