В DevExpress, как я могу изменить значение ячейки после изменения значения другой ячейки? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть DevExpress.XtraGrid. Я хочу, чтобы пользователь отредактировал один из столбцов, а после того, как редактирование выполнено, сетка обновит значение другого столбца. Я пытался использовать событие CustomRowCellEdit, но оно выдавало ошибку всякий раз, когда я добавлял это событие; В любом случае я не был уверен, как изменить значение другой ячейки. Может кто-нибудь объяснить, как это сделать?

Итак, у меня есть такая сетка:

----------------
| A | B  | C   |
----------------
| 1 | 50 | 100 |
----------------
| 2 | 20 | 40  |
----------------
| 3 | 10 | 20  |
----------------

Допустим, пользователь редактирует строку 1, столбец B как 25. После того, как они внесут изменение, я хочу, чтобы строка 1, столбец C, была в два раза больше, чем B. Таким образом, конечный результат ниже, где B1 - это значение, введенное пользователем, а C1 рассчитывается на основе значения в B1.

----------------
| A | B  | C   |
----------------
| 1 | 25 | 50  |
----------------
| 2 | 20 | 40  |
----------------
| 3 | 10 | 20  |
----------------

Я пробовал это:

    private void myView_CustomRowCellEdit_1(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
    {
        string newValue = e.CellValue.ToString();
        int index = myView.GetDataSourceRowIndex(e.RowHandle);
        myView.SetRowCellValue(index, "B", newValue);
    }

но я не думаю, что буква "B" ссылалась на столбец правильно, и я получил ошибку во время выполнения с исключением нулевой ссылки.

1 Ответ

0 голосов
/ 18 сентября 2018

Событие GridView.CustomRowCellEdit предназначено для условного назначения элементов хранилища ячейкам сетки. В вашем случае вместо этого необходимо обработать событие GridView.CellValueChanged .

См. Раздел справки Изменение и проверка значений ячеек для получения дополнительной информации.

...