Янус GridEX: не удается получить новое отредактированное значение в событии CellValueUpdated.

Как получить текущее редактируемое значение при обработке:

public class GridEX // ...
{
    // ... 
    public event ColumnActionEventHandler CellValueChanged;
    // ...
};

Попытка получить значение, используя:

GridEXCell valueChangedCell = _gridView.CurrentRow.Cells[<desired_column_index>];
object rawValue = valueChangedCell.Value;
// or even with
string rawValue = valueChangedCell.Text;

Единственный момент, когда значение valueChangedCell изменяется, - это когда запускается событие CellUpdated или UpdatingCell. Но последние два запускаются только в том случае, если пользователь изменил фокус ввода с клавиатуры на другую ячейку, вероятно, ради применения нового значения отредактированной ячейки. Я хочу найти значение ячейки, содержащей только флажок. Я хочу выполнить данное действие сразу после переключения флажка в данной ячейке, а не сразу после того, как пользователь изменит фокус, например. перемещается в другую ячейку таблицы. Видел, что в описаниях событий упоминается какой-то буфер строки:

[Description("Occurs after changes in a cell are copied into the row's buffer.")]
public event ColumnActionEventHandler CellUpdated;

[Description("Occurs before updating the changes in a cell to the row's buffer")]
public event UpdatingCellEventHandler UpdatingCell;

Я предполагаю, что текущее значение флажка, вероятно, хранится в каком-то буфере, и при изменении фокуса новое значение применяется к ячейке.

Есть идеи, как получить текущее установленное значение флажка при обработке GridEX.CellValueChanged Януса?


person TodorBalabanski    schedule 13.09.2016    source источник


Ответы (2)


Я исправил проблему, добавив метод, который срабатывает в событии ниже: private void

CloseEditMode() 
{ 
   gridRubrica.AllowEdit = InheritableBoolean.False; 
   gridRubrica.AllowEdit = InheritableBoolean.True; 
} 

private void gridRubrica_CellValueUpdated(object sender, ColumnActionEventArgs e) 
{ 
   if (e.Column.Key.Equals("Selected")) { CloseEditMode(); } 
} 
person TodorBalabanski    schedule 27.01.2017

Немного опоздал на вечеринку, но, поскольку у меня были те же трудности, я решил просто сбросить ожидающие изменения, когда Cell Changed - это CheckBox

private void gridEX1_CellChanged(object sender, ColumnActionEventArgs e)
{
    if (e.Column.ColumnType == ColumnType.CheckBox)
    {
        gridEX1.UpdateData(); // Flush any pending changes
    }
}

Это вызовет другой обработчик, который занимается проверкой (в моем случае)

person gtgaxiola    schedule 06.12.2016
comment
У меня это не работает, потому что, когда вы не меняете фокус строки, которую вы обновляете, модель не обновляется. Я исправил проблему, добавив метод, который срабатывает в событии ниже: private void CloseEditMode () {gridRubrica.AllowEdit = InheritableBoolean.False; gridRubrica.AllowEdit = InheritableBoolean.True; } private void gridRubrica_CellValueUpdated (отправитель объекта, ColumnActionEventArgs e) {if (e.Column.Key.Equals (Selected)) {CloseEditMode (); }} - person TodorBalabanski; 08.12.2016
comment
РЖУ НЕ МОГУ! У меня снова возникла эта проблема, и я нашел собственное решение! Спасибо, Прошлое МЕНЯ! - person gtgaxiola; 19.03.2018