C# Devexpress xtragird с множественным поиском в строках

Я разрабатываю приложение для Windows, используя С#, которое использует инструменты DevExpress. У меня есть сетка, которая содержит более одного редактирования поиска в одной строке. Я должен связать каждую строку таким образом, чтобы при изменении первого редактирования поиска соседнее редактирование поиска в той же строке в привязке. Я могу динамически добавлять строки с помощью кнопки «Добавить строку».

Как я могу привязать второй lookupEdit к изменению первого редактирования lookup. При каждом изменении значения поиска затрагивается только одна строка, все предыдущие должны оставаться прежними.

Я застрял в течение нескольких дней - кто-нибудь может мне помочь?

Заранее спасибо.

вот мои тренировки

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


                }
            }
        }

person M14    schedule 29.06.2015    source источник


Ответы (1)


Как вы знаете, lookuedit имеет один и тот же источник данных для всех строк.
Вам необходимо обновить этот источник данных в 2 случаях
1)В событии FocusRowChanged представления сетки
2)Вкл. в событии CellValueChanged (для вашего первый столбец)

Таким образом, внутри приведенных выше событий вызывается функция UpdateLokkupDatasource.
Внутри этой функции получите сфокусированную строку (чтобы вы могли прочитать первое поле) и обновите источник данных.

Не забудьте обработать событие CustomDisplayText второго lookupEdit (это вам понадобится, потому что в новом источнике данных не будет значений)

person George Vovos    schedule 30.06.2015