Про сохранение записи

Столкнулся с интересным поведением карточки записи.
Создаем новую запись. Добавил на форму кнопку, которая должна: (1) сохранить текущую запись, (2) не закрывая карточку записи, создать несколько связанных записей в подчиненной таблице.
Казалось бы, все просто - добавляем на сценарий вызываемый кнопкой код

Page.AddScript(Page.DataSource.ClientID + ".save();");
IsWindowClose = false;

после чего запись сохранена и создаются в скрипте связанные записи, и так далее.
Но вот нюанс - если сохранение подобным кодом происходит, карточка после этого как-бы переинициализируется - например, если перед вызовом сохранения в области сообщений карточки записи был какой-либо текст, он сбрасывается.
Я что-то упускаю из виду? Может быть, надо добавлять еще что-то для корректной работы карточки записи при таком сохранении?

Нравится

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

Александр, попробуйте на Init-е страницы подписаться на клик по кнопке таким образом:

ScriptManager.AddScript("{0}.on('click', function(){{ {1}.save(); }})", Page.ApplyButton.ClientID, Page.DataSource.ClientID);

При таком решении нужно убрать серверную обработку (на процессе страницы) кнопки.

Наталия, спасибо! Я так понимаю это подписка на действие сохранения записи, а если мне надо еще и после сохранения выполнить сценарий - его как вызывать? Задача то именно в этом - сохранение вынужденная мера, так как в сценарии будут создаваться подчиненные записи.
Или как то можно вызов сценария добавить в подписку на клик внутрь function() после сохранения?

Александр, попробуйте подписаться на DataSourceSaved.

"Бондарь Наталия" написал:

Александр, попробуйте подписаться на DataSourceSaved.


Так оно каждый раз будет срабатывать!! сколько ж я там записей подчиненных насоздаю при сохранениях карточки?

Александр, добрый день!

Если Ваша доп. логика джава-скриптовая (в чем я сомневаюсь, но все же), можете воспользоваться алгоритмом, описанным здесь:

http://www.community.terrasoft.ru/forum/topic/9711#comment-41436

Если же Ваша логика серверная, то вы всё правильно сделали - посмотрите пример в карточке "E-mail". Там, если попытаться отправить письмо по не сохраненной активности, система как раз и предлагает вначале сохранить эту запись.

"Олейник Дмитрий" написал:Если же Ваша логика серверная, то вы всё правильно сделали - посмотрите пример в карточке "E-mail".

Дмитрий, спасибо за примеры, посмотрю!

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