У меня есть 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» правильно отсылает к столбцу, и я получил ошибку времени выполнения с исключением нулевой ссылки.
Событие GridView.CustomRowCellEdit предназначено для условного присвоения элементов репозитория ячейкам сетки. В вашем случае вместо этого необходимо обработать событие GridView.CellValueChanged.
Обратитесь к разделу справки Изменить и проверить значения ячеек для получения дополнительной информации.
Всегда ли значение в столбце C в два раза больше значения из B? В этом случае вы можете использовать несвязанное выражение.