Изменение значения в ASPxGridView.OnCustomCallback, когда оно уже находится в режиме редактирования, не сохранит новое значение - PullRequest
0 голосов
/ 08 марта 2011

У меня ASPxGridView показывается пользователю с помощью кнопки редактирования. Когда пользователь нажимает кнопку команды редактирования, выбранная строка изменится на форму редактирования.

В форме редактирования у меня есть элемент управления, который при щелчке будет выполнять настраиваемый обратный вызов через javascript, затем обработчик настраиваемого обратного вызова изменит значение в выбранной строке и вызовет UpdateEdit (), чтобы сохранить измененное значение и вернуться к обычному макет вида сетки.

Однако новое значение никогда не сохраняется в базовом источнике данных, фактически, если я отлаживаю метод ExecuteUpdate в DataSourceControl, я вижу обновленное значение в коллекции oldValues, а коллекция значений имеет исходное значение.

JavaScript, который вызывается из элемента управления в форме редактирования:

javascript:grid.PerformCallback("CloseOrder");

Пользовательский обработчик обратного вызова, который запускается на сервере:

protected void gdOrders_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e) {
    if (e.Parameters == "CloseOrder") {
        var row = gdOrders.GetDataRow(gdOrders.EditingRowVisibleIndex);
        row["Status"] = 5;
        gdOrders.UpdateEdit();
    }
}

1 Ответ

1 голос
/ 08 марта 2011

Я нашел следующее решение для работы.Я не уверен, что это правильный путь, но он работает.

protected void gdOrders_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e) {
    if (e.Parameters == "CloseOrder") {                
        gdOrders.RowUpdating += (s, e1) => { e1.NewValues["Status"] = 5; };
        gdOrders.UpdateEdit();
    }
}
...