10.04.2015, 20:42 | #1 |
Участник
|
CRM 2013. Возможности модального окна Xrm.Internal.openDialog
Приветствую, коллеги.
Слепил ASPX-ресурс. И, в принципе, реализовал задачу на виндовом модальном окне window.showModalDialog. Но, будучи перфекционистом, хочется его, так сказать - ЦРМ-стайл . Отсюда вопросы (так как пока не получилось): Можно ли в Xrm.Internal.openDialog отобразить ASPX-ресурс? И можно ли вообще передать В это окно параметры Xrm.Page? В попытках реализации исходил из классического: X++: var DialogOption = new Xrm.DialogOptions; DialogOption.width = 500; DialogOption.height = 420; Xrm.Internal.openDialog("/WebResources/dt_Custom.html", DialogOption, null, null, CallbackFunction); function CallbackFunction(returnValue) { } |
|
10.04.2015, 22:12 | #2 |
Чайный пьяница
|
Напишите код, который у вас реализует открытие формы - помогу с переписыванием под CRM Style.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
12.04.2015, 12:12 | #3 |
Участник
|
Сейчас это вот такой простенький код, вызываемый по кнопке с риббона:
X++: var entityId = Xrm.Page.data.entity.getId(); window.showModalDialog("http://host/CustomCaseResolution.aspx?caseGuid=" + entityId.toString(), "", "resizable:no; dialogHeight:430px; dialogWidth:350px;"); Последний раз редактировалось magicandy; 12.04.2015 в 12:20. |
|
13.04.2015, 10:25 | #4 |
Чайный пьяница
|
Цитата:
Сообщение от magicandy
Сейчас это вот такой простенький код, вызываемый по кнопке с риббона:
X++: var entityId = Xrm.Page.data.entity.getId(); window.showModalDialog("http://host/CustomCaseResolution.aspx?caseGuid=" + entityId.toString(), "", "resizable:no; dialogHeight:430px; dialogWidth:350px;");
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: magicandy (1). |
13.04.2015, 13:16 | #5 |
Участник
|
По кнопке вызываю скрипт
X++: function CustomCaseResolution() { var DialogOption = new Xrm.DialogOptions; DialogOption.width = 500; DialogOption.height = 420; Xrm.Internal.openDialog("/WebResources/dt_Custom.html", DialogOption, null, null, CallbackFunction); function CallbackFunction(returnValue) { } } X++: <html> <head> <meta charset="utf-8"> </head> <body> <script language="javascript"> document.location.href = "http://10.3.153.24:4006/"; alert("OK!"); // Этот алерт срабатывает. </script> </body> </html> Урл точно рабочий. |
|
13.04.2015, 13:45 | #6 |
Участник
|
X++: <html> <head> <base target="_self"> <script language="javascript"> function Redirect () { document.location.href = "http://10.3.153.24:4006/CustomCaseResolution.aspx"; } </script> </head> <body> <script language="javascript"> Redirect(); </script> </body> </html> В Хроме просто висит пустой диалог, в ИЕ предупреждает о содержимом, и полностью обновляет страницу, открывая ЦРМ. |
|
13.04.2015, 13:49 | #7 |
Чайный пьяница
|
Странно, что не работает. Думаю, что тут ничего кроме экспериментов не остаётся.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
13.04.2015, 14:17 | #8 |
Участник
|
Цитата:
Сообщение от magicandy
X++: <html> <head> <base target="_self"> <script language="javascript"> function Redirect () { document.location.href = "http://10.3.153.24:4006/CustomCaseResolution.aspx"; } </script> </head> <body> <script language="javascript"> Redirect(); </script> </body> </html> В Хроме просто висит пустой диалог, в ИЕ предупреждает о содержимом, и полностью обновляет страницу, открывая ЦРМ. Реквест выполняется?
__________________
Читайте SDK!!! |
|
|
За это сообщение автора поблагодарили: magicandy (1). |
13.04.2015, 21:28 | #9 |
Участник
|
Цитата:
Сообщение от Konstantin Katsovich
Что показывет fiddler?
Реквест выполняется? Но приложение всё же удалось открыть в модальном диалоге ЦРМ, после его публикации на ИИС (где хостится ЦРМ) и обращению по ХТТПС. Но тут всплыла куча других проблем. Приложение опубликовано в папке ISV. После его запуска (не важно, в каком типе модального окна) всё вроде бы ОК. Форма биндится корректно. Но стоит изменить значение контрола, как биндинг слетает. При локальной отладке такого не возникает. Ещё, если запустить приложение не по хттпс, то происходит следующее - в Хроме всё работает прекрасно, в ИЕ каждое изменение значения контрола, приводит к переоткрытию приложения в новой вкладке ИЕ. Думал поможет переход на хттпс, но тут всё только стало ещё хуже . Видимо, собака зарыта где-то в настройках приложения на ИИСе. Понимаю, что вопрос уже не профильный, но всё же может кто-то подскажет на какие настройки в ИИСе стоит обратить особое внимание при публикации црм-асп-приложения? Последний раз редактировалось magicandy; 13.04.2015 в 21:31. |
|
14.04.2015, 08:21 | #10 |
Чайный пьяница
|
По поводу биндинга - из моего опыта написания страниц для CRM - это не побеждалось и каждый раз необходимо было перебиндживать данные на онлоаде. По поводу переоткрытия в новой вкладке посмотрите это - http://a33ik.blogspot.com/2009/10/sh...in-custom.html
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
14.04.2015, 11:55 | #11 |
Участник
|
Цитата:
Сообщение от a33ik
По поводу переоткрытия в новой вкладке посмотрите это - http://a33ik.blogspot.com/2009/10/sh...in-custom.html
Цитата:
1 контрол - DropDownList с родительскими объектами 2 контрол - ListBox с дочерними На онлоад всё биндится хорошо. Видны все родители в DropDownList. Первый пункт "болванка", выбрано по умолчанию, потому дочерние не биндятся. Как только я выбираю другого родителя, он тут же возвращается к "болванке". то есть, чтобы вылечить, мне нужно каждый раз делать некий онлоад? Подчеркну - на локалхосте и по хттп (в хроме) проблем с приложением нет. |
|
21.04.2015, 17:25 | #12 |
Участник
|
Полностью переделал решение на JS, в диалоге CRM-style. Теперь всё чётко, во всех браузерах.
Отдельное спасибо a33ik за статью. Только для полного фарша в ней не хватает быстрорефреша формы, после закрытия диалога. После некоторых мытарств, хорошо заработало так (в Хроме и ИЕ): X++: var objWindow = window.getDialogArguments();
objWindow.location.replace(objWindow.location);
closeWindow(); |
|
|
|