先解释一下标题:
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列的处理罢了,不赘述。