先解释一下标题:

grid中的某一列默认为文本框,根据需要动态的变更为下拉框,且支持动态变更数据源

需求是这样的:

有一些参数(A),这些参数又分别对应另外的参数(B),所以,先把A作为一列,B根据A的变化而变更数据源(或者控件类型——其实默认为文本框,满足条件变更为下拉框且绑定数据源)。

实现方式:

在GridView中的CustomRowCellEdit事件中增加处理,

1、先判断string.Equals(e.Column.FieldName, B)当前操作的列是否为B列;

2、如果是,那么var row = gvParameter.GetRow(e.RowHandle)获取当前行信息,然后取得A列在该行的值;

3、然后判断A的值,以确定是变更数据源还是返回默认控件类型

if(变更数据源){

RepositoryItemComboBox cbx = new DevExpress.XtraEditors.Repository.RepositoryItemComboBox();
        cbx.Items.Clear();

// 更改数据源

cbx.Items.Add(...);

e.RepositoryItem = cbx;

}

if(返回默认控件类型)

// 不做处理

4、取值和赋值时候的处理:当一切都是那么顺利的实现之后,就要到了最关键的时刻,将数据保存到数据库,从数据库读取数据显示到窗体中。其实也简单,就是显示和存储的时候加一些对B列的处理罢了,不赘述。

05-02 23:52