Добрый день! Разрабатываем новый функционал с возможностью редактирования древовидного грида.
Подскажите, пожалуйста, почему в древовидном гриде по кнопке Enter на обработчике OnAfterEdit значение DataField.ValueIsChanged == false, какие могут быть варианты? При этом в другом недревовидном гриде в этом же обработчике по Enter все работает и DataField.ValueIsChanged == true.
Нравится
Здравствуйте.
Это два различных грида и у них различное поведение. Если для простого грида, нажатие на клавишу 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; }