Как запустить событие при изменении значения ячейки в RadGridView?

Я использую RadGridView для отображения товаров, которые продаются. В той же строке у меня также есть столбец «Количество», «Цена за единицу», «Общая цена».

Когда пользователь изменяет значение столбца «Количество», я хочу запустить событие, которое будет вычислять значение столбца «Общая цена», умножая «Количество» на «Цена товара».

Как можно добавить такое событие, которое будет срабатывать только при изменении значения столбца «Количество»?

Я пробовал это, который не имел никакого эффекта

private void radGridView1_CurrentRowChanged(object sender, CurrentRowChangedEventArgs e) {

    double itemPrice = Convert.ToDouble(e.CurrentRow.Cells["Unit Price"].Value);
    int itemQty = Convert.ToInt32(e.CurrentRow.Cells["Qty"].Value);
    double totalPrice = itemPrice * itemQty;

    e.CurrentRow.Cells["Total Price"].Value = totalPrice.ToString();
}

введите здесь описание изображения


person Jaylen    schedule 25.01.2015    source источник


Ответы (1)


Подпишитесь на событие CellEndEdit (в вашем конструкторе, если хотите):

radGridView1.CellEndEdit += (s, e) =>
{
    if (e.Column == radGridView1.Columns["Qty"])
    {
        var row = radGridView1.CurrentRow.Cells;

        row["Total Price"].Value =
            (int)row["Qty"].Value * (decimal)row["Item Price"].Value;
    }
};

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

Вы также можете выделить его в отдельный метод; с коротким методом я иногда нахожу этот "встроенный" способ более легким для чтения и обслуживания. YMMV.

person Grant Winney    schedule 25.01.2015
comment
Я добавил этот код в Form_Load, но он не срабатывает при изменении столбца количества. - person Jaylen; 25.01.2015
comment
Я просто добавил снимок экрана в свой вопрос, чтобы наглядно показать вам, как я редактирую. после того, как я закончу редактирование, я нажму Enter или переведу фокус на другую ячейку/элемент управления - person Jaylen; 25.01.2015
comment
Большое спасибо. это действительно была опечатка - person Jaylen; 25.01.2015