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;
}


发布评论