我正在使用使用DevExpress工具的c#开发一个Windows应用程序。 我有一个网格,在一行中包含多个查找编辑。 我必须以这样的方式绑定每一行:当第一个查找编辑更改时,然后相邻的查找编辑在bind中的同一行。 我可以用'动态添加行。添加行'按钮。
如何在第一次查找编辑的更改中绑定第二个lookupEdit。 在每次查找值更改时,只有一行受影响所有以前应该保持不变。
我已经被困了好几天 - 有人能帮帮我吗?
提前致谢。
这是我的锻炼
private void leGridSubinventory_EditValueChanged(object sender, EventArgs e)
{
gvReservation.PostEditor();
gvReservation.UpdateCurrentRow();
GridView view = gvReservation;
var obj = view.GetFocusedRow();
int locationId = Common.intCast(leOutlets.EditValue);
LookUpEdit sub = (LookUpEdit)sender;
view.SetRowCellValue(view.FocusedRowHandle, view.Columns["itemId"], -1);
view.SetRowCellValue(view.FocusedRowHandle, view.Columns["ItemDesc"], "");
view.SetRowCellValue(view.FocusedRowHandle, view.Columns["PrimaryUOM"], "");
view.SetRowCellValue(view.FocusedRowHandle, view.Columns["OnHandQty"], 0);
view.SetRowCellValue(view.FocusedRowHandle, view.Columns["OnHandQty"], 0);
if (sub.ItemIndex != -1)
{
int subId = Common.intCast(sub.EditValue);
if (subId != -1)
{
DataTable dtItems = cdm.GetAllItemsBySubinventory(locationId, subId);
DataRow locRow = dtItems.NewRow();
locRow["itemId"] = -1;
locRow["itemCode"] = "--Select--";
dtItems.Rows.InsertAt(locRow, 0);
rleItemCode.DataSource = dtItems;
rleItemCode.DisplayMember = "itemCode";
rleItemCode.ValueMember = "itemId";
}
}
}
答案 0 :(得分:1)
如您所知,lookuedit具有相同的所有行的数据源 您需要两次更新该数据源 1)在gridview的FocusRowChanged事件上 2)On CellValueChanged事件(对于您的第一列)
所以在上面的事件中调用一个函数UpdateLokkupDatasource 在此函数内部获取焦点行(因此您可以读取第一个字段)并更新数据源
不要忘记处理第二个lookupEdit的CustomDisplayText事件(您将需要它,因为新数据源中不存在值)