Вроде всё просто
На кнопку повесила обработчик, хочу следующую функциональность: изменить значения поля ДатаСорса и закрыть карточку. Видимо, что-то пропускаю, т.к. данные не сохраняются.

bool Changed  = Page.DataSource.ActiveRow.GetTypedColumnValuebool>("Changed");
if(!Changed)
{
        Changed = !Changed;
        Page.DataSource.ActiveRow.SetColumnValue("Changed",Changed);
}

Если после изменения данных не вызывать закрытие окна, то всё сохраняется, правда затем приходится нажимать ОК дважды, т.к. после однократного нажатия не закрывается

Нравится

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

Здравствуйте, Ольга!

Пожалуйста, убедитесь, что новое поле Changed добавлено Вами в DataSorce карточки.

По-моему, поле добавлено

Ольга, а у Вас в конце скрипта есть return true;? если его нет, процесс не пойдет дальше, и не будет вызывать событие OkButtonClick.

В конце скрипта есть return true.
Если после скрипта вызвать событие OKButtjnClick, то вызывается соответствующий обработчик и окно в итоге закрывается, но поле не меняет своего значения
Если после скрипта НЕ вызывать событие OKButtjnClick, то изменённое значение поля сохраняется

Я решал проблему созданием невидимого CheckBox-а, завязанного на это поле, и записью не в Page.DataSource.ActiveRow, а в его свойство Checked. Возможно, для этого поля ещё надо будет поставить "Всегда загружать данные" в карточке.

Здравствуйте, Ольга!

Пробовала воспроизвести аналогичную ситуация на сборке 5.4.0.1613 - не удалось.

В данном случае рекомендую воспользоваться советом Александра - установить для колонки Всегда загружать данные

Александр, я так и делала сначала, но мне не понравилось, что хотя поле невидимое,его значение всё равно изменяется, страница обновляется и мелькает, поэтому я решила сделать через DataSource

Ольга, по возможности, просим предоставить для анализа схемы датасета и страницы - это позволит ускорить диагностику и дать конкретные рекомендации.

Показать все комментарии