C#Devexpress xtragird,行中有多个lookupedit

时间:2015-06-29 15:41:20

标签: c# .net devexpress xtragrid devexpress-windows-ui

我正在使用使用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";


                }
            }
        }

1 个答案:

答案 0 :(得分:1)

如您所知,lookuedit具有相同的所有行的数据源 您需要两次更新该数据源 1)在gridview的FocusRowChanged事件上 2)On CellValueChanged事件(对于您的第一列)

所以在上面的事件中调用一个函数UpdateLokkupDatasource 在此函数内部获取焦点行(因此您可以读取第一个字段)并更新数据源

不要忘记处理第二个lookupEdit的CustomDisplayText事件(您将需要它,因为新数据源中不存在值)