2024年4月21日发(作者:)

在使用GridControl时,可能会有需求要求某2列显示

RepositoryItemLookUpEdit

控件,而且在选择第一列的值时,第2

列绑定的数据源发生变化。当然这在其他地方很容易实现,但是在GridControl的列中就不能用以往的思维方式进行了,因为在

GridControl中,你只有选中这一列,它才会显示出该列所绑定控件的特性,否则只是一个普通的lable。

基本思路:在点击第2列时才去获取第一列选中的值,然后根据该值查询出第2列的数据进行绑定。

方法/步骤

1. 1

1. RepositoryItemLookUpEdit

要显示

控件的创建,我是在CustomRowCellEditForEditing这个事件下处理的。(因为我所需

的列是动态创建的,所以需要这样创建,如果你是固定显示,直接绑定

RepositoryItemLookUpEdit

RepositoryItemLookUpEdit

点击事件就可以了。)在这个事件里面,还可以控制某一列不同行显示不同控件。(因

为Devexpress是只能设置某一列控件的属性的,不能精准到控制每个单元格中的控件)

//DEPOT 堆场列 级联 PORT港口列

private void Frm _Load(object sender, EventArgs e)

{

}

void gridView_CustomRowCellEditForEditing(object sender,

RowCellEditEventArgs e)

{

ew view = sender as

ew;

toryItemLookUpEdit lue = new

toryItemLookUpEdit();

switch (ame)

{

case "DEPOT":

//获取该行port

string portFilter = CellValue(dle, "PORT").ToString();

if (portFilter != null && portFilter != "")

{

= ("Port='{0}'", portFilter);

}

else

{

RowCellEditForEditing += gridView_CustomRowCellEditForEditing;

//自定义一个查不到结果的 过滤条件

urce = =

("Port='123456'", portFilter);

}

#region RepositoryItemLookUpEdit 格式化

urce = depotBindingSource;

yMember = "CODE";

ember = "CODE";

terCasing = ;

ge(new

ColumnInfo[] {

new ColumnInfo("CODE", 90, "Code"),

new ColumnInfo("Desp", 350, "Desp"),

new ColumnInfo("Port", 60, "Port")});

ormMinSize = new (500, 0);

idth = 500;

#endregion

//LookUpEdit值改变后触发

lueChanged += lue_EditValueChanged;

//下拉框选中值后,需要进行转换

ditValue += lue_ParseEditValue;

//指定该列控件

toryItem = lue;

break;

}

}

2.

选择

RepositoryItemLookUpEdit

的值时进行的处理。

void lue_EditValueChanged(object sender, EventArgs e)

{

it edit = Editor;

switch (ame)

{

case "DEPOT"://堆场 列

usedRowCellValue(s["DEPOT"],

lue);

break;

}

}

3.

//grid中的下拉框必须要处理一下,不然会报(对象必须实现iconvertible)错误

void lue_ParseEditValue(object sender,

tEditValueEventArgs e)

{

if ( != null)

= ng();

else

= "";

d = true;

}