Показать диалог для подтверждения статуса "Отмена" в DCM раздела Кейс.
Здравствуйте,
Имеется задача: Показать диалоговое окно подтверждения с кнопками OK и KO для подтверждения отмены Обращения (Case), если пользователь нажал на статус Cancel в DCM.
Если была нажата кнопка OK, то Case отменяется.
Если была нажата кнопка KO, то Case вернется к предыдущему статусу.
Я попытался отобразить диалоговое окно по событию OnSaving объекта Case.
Вот моя функция:
public override void OnSaving(object sender, EntityBeforeEventArgs e) { string status = UpdateData(sender); if(status!="Canceled") { base.OnSaving(sender, e); } else { //Todo: Show dialog with question //Todo: Get response OK or KO /*if(response ="OK"){ base.OnSaving(sender, e); }else{ e.IsCanceled = true; }*/ } }
К сожалению, я не нашла никакой информации о том, как отобразить диалоговое окно на стороне сервера.
Я знаю способ отправки сообщений с клиентской стороны (this.showConfirmationDialog(message, function(returnCode)), но не знаю, как вернуть результат нажатия кнопки на сервер для завершения метода OnSaving.
private void SendMessage(object sender) { var entity = (Entity)sender; var userConnection = entity.UserConnection; string senderName = "MySenderNameCase"; string message = JsonConvert.SerializeObject(new {test = "status"}); MsgChannelUtilities.PostMessage(userConnection, senderName, message); }
Пожалуйста, подскажите, как правильно выполнить эту задачу.
Спасибо.
С наилучшими пожеланиями,
Мария
Нравится
Мы делали подтверждение перехода Case на финальный статус на странице, выдавая showConfirmationDialog в функции Save.
this.showConfirmationDialog(confirmationMessage.message, function(result) { if (result === Terrasoft.MessageBoxButtons.YES.returnCode) { this.save(scopeArguments); } else { this.onDiscardChangesClick(); } }, ["Yes", "No"]);
Мы делали подтверждение перехода Case на финальный статус на странице, выдавая showConfirmationDialog в функции Save.
this.showConfirmationDialog(confirmationMessage.message, function(result) { if (result === Terrasoft.MessageBoxButtons.YES.returnCode) { this.save(scopeArguments); } else { this.onDiscardChangesClick(); } }, ["Yes", "No"]);
Здравствуйте, Владимир.
Спасибо за ваш ответ.
Это помогло решить задачу!
Mariia Prostiak,
как все же у Вас получилось положить всплывающий вопрос в Save?
this.save(scopeArguments); - и что ложили в "scopeArguments". Если не сложно, можете написать код функции, есть такая же задача на решении?
Владимир Соколов,
или подскажите Вы, как в Save реализовали данное всплавающее соощение не получив рекурсии
Александр Тыра,
Здравствуйте,
Вечная рекурсия решается вызовом this.callParent(config) вместо this.save(scopeArguments);
Итого получается:
save: function(config) { this.showConfirmationDialog(confirmationMessage.message, function(result) { if (result === Terrasoft.MessageBoxButtons.YES.returnCode) { this.callParent(config); } else { this.onDiscardChangesClick(); } }, ["Yes", "No"]); }