Заравствуйте.
Ни как не могу разобраться. Помогите пожалуйста.
Есть окно редактирования, в нём есть поле (выпадающий список) который берётся из поля справочника датасета.
Мне надо при изменении этого поля при определённых условиях менять его на другое значение.
В событии dlDataOnDatasetDataChange отлавливаю его изменения. Присваиваю нужное мне значение:
Датасет в режиме редактирования, ошибок не возникает, значение меняется (проверял). Но в окне редактирования остаётся старый параметр! Отображантся не то, что есть.
Подстажите пожалуйста как заставить выпадающий список показать правельное значение или как его изменить, чтобы визуальное значение и значение в датасете отображались правельно.
Спасибо!
Нравится
Насколько я помню, то на событие OnDatasetDataChange нельзя изменять значение того поля, на изменение которого это событие сработало.
Возможно, вам нужно просто запретить изменение значения в этом поле.
Вообщем мне нужно реализовать такую чтуку, чтобы одни пользователи могли выбрать определённое значение справочника, а другие не могли... Даже если я ставлю
Self.ComponentsByName('dlData').Dataset.ValAsGUID('StateID') = null;
, то нул сохроняется, но в окне этого не видно... :exclaim:
Здравствуйте,
В случае с выпадающими списками следует использовать UnprepareDropDownList
Подробнее можно почитать
http://community.terrasoft.ua/forum/topic/1489
если вы поменяете тип лукапного поля на
"Slovarik" написал:то нул сохроняется, но в окне этого не видно
Я думаю, чтобы видно было в окне, вам нужно менять DisplayValue (отображаемое значение) этого поля на нужное.
Например:
DataField.DisplayValue = 'Какое-то значение';
"Кошкаров Андрей" написал:
DataField.DisplayValue = 'Какое-то значение';
Так не работает. Выдаёт "Ошибка выполнения метода 'dlDataOnDatasetDataChange'. Объект не поддерживает это свойство или метод «Call Stack»"
И ID'шку туда писать пробовал и текст... по нулям...
Скорее всего, у Вас кешируются значения выпадающего меню.
Чтобы заново получить значения полей справочника для выпадающего меню, добавьте строку кода после изменения:
edtGraph.UnprepareDropDownList();
в данном случае edtGraph - название поля с выпадающим меню.
"Alimova Anna" написал:Чтобы заново получить значения полей справочника для выпадающего меню, добавьте строку кода после изменения:edtGraph.UnprepareDropDownList();
в данном случае edtGraph - название поля с выпадающим меню.
Я так делал. Изменений не происходит... В датасете правельное значение, а в окне остаётся старое...
Попробуйте очистить кэш и перезапустить Террасофт
Убедитесь, что Вы выполняете очистку в нужном месте: http://www.community.terrasoft.ua/forum/topic/1489#comment-5131
"Кошкаров Андрей" написал:Насколько я помню, то на событие OnDatasetDataChange нельзя изменять значение того поля, на изменение которого это событие сработало.
Так и есть, уловки с DisplayValue не помогут.