Enter на обработчике OnAfterEdit

Добрый день! Разрабатываем новый функционал с возможностью редактирования древовидного грида.
Подскажите, пожалуйста, почему в древовидном гриде по кнопке Enter на обработчике OnAfterEdit значение DataField.ValueIsChanged == false, какие могут быть варианты? При этом в другом недревовидном гриде в этом же обработчике по Enter все работает и DataField.ValueIsChanged == true.

Нравится

7 комментариев

Здравствуйте.

Это два различных грида и у них различное поведение. Если для простого грида, нажатие на клавишу Enter означает начало редактирования записи (поля), то для древовидного грида, означает завершение редактирования поля.

Может вы знаете, что нам делать c Enter-ом в этой ситуации? - мы не можем правильно его интерпретировать, чтобы значение правильно сохранялось. Возможно ли как-то это поведение по Enter заменить таким же как и в обычном гриде? Или может посоветуете как это нажатие отлавливать и имитировать нажатие, например, стрелки (перемещение курсора), по которой как раз все работает правильно.

Можете более подробно описать "чтобы значение правильно сохранялось". Данные в автоматическом режиме сохраняются.
И зачем, что либо симулировать?

Можете написать более подробно, что хотите сделать.

У нас сохранение в ячейках всегда завязано на условие
DataField.ValueIsChanged == true, хотим сделать сделать что бы true было и по Enter тоже

В событии окна OnKeyDown напишите код:

	if (Key.Value == 13) {
		// было нажатие клавиши Enter
	}

Дальше реализовываете свою логику.

У нас в OnKeyDown нет нужных параметров: DataField.ValueIsChanged
DataField.Value и DataField.OldValue

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

      var Field = {Value = '', ValueIsChanged = false}  
......
 
        if (Key.Value == 13) {
                // было нажатие клавиши Enter
                Field.ValueIsChanged = true;
        }
Показать все комментарии