29.05.2012, 11:22 | #1 |
Участник
|
Родительское окно crm2011
Всем привет! Есть небольшой вопрос. У меня есть кнопка на форме(не на риббоне), по её нажатию открывается окно, в котором тоже есть кнопка. И по её нажатию, мне нужно записать значение в поле родительского окна crm.
Пишу код: //функция вызывается по нажатию кнопки дочернего окна function test() { window.top.opener.document.forms[0].Xrm.Page.getAttribute("name").setValue("sghfh"); } В результате ничего не происходит. Пробовал еще вот так : window.opener.document.getElementById('name').value = "sghfh"; результат тот же Вот так : window.top.opener.document.getElementById( "Name" ).value = "value"; тоже не работает Последний раз редактировалось Taker1796; 29.05.2012 в 11:45. |
|
29.05.2012, 11:58 | #2 |
Чайный пьяница
|
Попробуйте так:
Код: function test() { window.top.opener.document.getElementById('contentIFrame').contentWindow.document.Xrm.Page.getAttribute("name").setValue("sghfh"); }
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
29.05.2012, 12:02 | #3 |
Участник
|
|
|
29.05.2012, 12:45 | #4 |
Чайный пьяница
|
Тогда так:
Код: function test() { window.top.opener.Xrm.Page.getAttribute("name").setValue("sghfh"); }
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
29.05.2012, 13:01 | #5 |
Участник
|
|
|
29.05.2012, 15:05 | #6 |
Чайный пьяница
|
У меня заработало. Первое писал на колене по памяти. Включайте дебаггер и тестируйте.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
29.05.2012, 15:22 | #7 |
Участник
|
Цитата:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript"> function test(selectedindex) { var myindex = selectedindex.selectedIndex; var SelValue = selectedindex.options[myindex].value; window.top.opener.Xrm.Page.getAttribute("name").setValue("sghfh"); } </script> </head> <body bgcolor="White"> <form id="form1" runat="server"> <asp:Label ID="Label1" runat="server" Text="Label">Выберите категорию лида.</asp:Label> <br> <br> <div> <aspropDownList ID="DropDownList1" runat="server" Width="70"> <asp:ListItem Selected="none"> ... </asp:ListItem> <asp:ListItem Value="Category A"> A </asp:ListItem> <asp:ListItem Value="Category B"> B </asp:ListItem> <asp:ListItem Value="Category C"> C </asp:ListItem> </aspropDownList> </div> <br> <br> <asp:Button ID="Button3" runat="server" Text="Button" /> <asp:button ID="Button1" runat="server" text="Ok" Width="100" OnClientClick='test(this.form.DropDownList1);' /> <asp:button ID="Button2" runat="server" text="Отмена" Width="100" OnClientClick='alert("Отмена");' /> </form> </body> </html> На форме crm добавил кнопку, по её нажатии загружаю эту aspx страницу |
|
29.05.2012, 15:41 | #8 |
Чайный пьяница
|
А где вы хостите эту страницу? Если не в то м же хосте что и CRM, то боюсь ничего не получится.
Плюс покажите, пожалуйста, код при помощи которой вы открываете эту самую страницу.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
29.05.2012, 15:45 | #9 |
Участник
|
Цитата:
Вот код открытия : var Opportunity={ "OnLoad":function(context) { function () {window.open(" http://localhost:6802/leedcategory/Default.aspx ") ;} ); } |
|
29.05.2012, 16:08 | #10 |
Чайный пьяница
|
Цитата:
Сообщение от Taker1796
Блин, я с локалхоста гружу.
Вот код открытия : var Opportunity={ "OnLoad":function(context) { function () {window.open(" http://localhost:6802/leedcategory/Default.aspx ") ;} ); }
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
29.05.2012, 18:17 | #11 |
Участник
|
Объясните пожалуйста новичку, как правильно закинуть страницу в crm. Я делаю так, кидаю её в папку ISV -> MyFolder ->mypage.aspx. Помимо этого в эту папку я закидываю mypage.aspx.cs , mypage.aspx.designer.cs, Web.config, Web.Debug, Web.Release. После чего создаю в IIS виртуальный каталог и указываю путь к папке MyFolder. Далее пытаюсь вызвать страницу из браузера по пути http://myCrm/ISV/MyFolder /mypage.aspx
В итоге ловлю ошибку в трейсе System.Web.HttpParseException (0x80004005): Could not load type mypage.aspx.cs , mypage.aspx.designer.cs - эти файлы я не трогал и никакой код в них не писал. Только на самой странице Если я регистрирую как приложение то получаю такую ошибку : Could not load file or assembly 'Microsoft.Crm, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Не удается найти указанный файл. И еще вопрос, в каком случае создавать в IIS виртуальный каталог, а в каком приложение? Последний раз редактировалось Taker1796; 29.05.2012 в 18:24. |
|
29.05.2012, 18:55 | #12 |
Чайный пьяница
|
Цитата:
Сообщение от Taker1796
Объясните пожалуйста новичку, как правильно закинуть страницу в crm. Я делаю так, кидаю её в папку ISV -> MyFolder ->mypage.aspx. Помимо этого в эту папку я закидываю mypage.aspx.cs , mypage.aspx.designer.cs, Web.config, Web.Debug, Web.Release. После чего создаю в IIS виртуальный каталог и указываю путь к папке MyFolder. Далее пытаюсь вызвать страницу из браузера по пути http://myCrm/ISV/MyFolder /mypage.aspx
В итоге ловлю ошибку в трейсе System.Web.HttpParseException (0x80004005): Could not load type mypage.aspx.cs , mypage.aspx.designer.cs - эти файлы я не трогал и никакой код в них не писал. Только на самой странице Если я регистрирую как приложение то получаю такую ошибку : Could not load file or assembly 'Microsoft.Crm, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Не удается найти указанный файл. И еще вопрос, в каком случае создавать в IIS виртуальный каталог, а в каком приложение?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
29.05.2012, 20:07 | #13 |
Участник
|
А можно поподробнее? Вот Вы говорите, что у Вас получилось. Каким образом Вы сделали? Мне бы последовательность действий узнать, если Вас не затруднит, опишите пожалуйста. Я просто думал, что нужно регистрировать как виртуальный каталог кастомные страницы
|
|
29.05.2012, 20:11 | #14 |
Чайный пьяница
|
Я не говорил, что у меня заработало это решение с виртуальным каталогом, aspx страницами и прочее. У меня заработал код обновления поля родителя с открытого окна (я открыл одну запись из второй, на ней код заработал). Пока вы не написали, что у вас кастомная страница я думал, что у вас стандартная CRM страница. На худой случай - вебресурс. Как решить вашу проблему с хостингом aspx страницы не знаю. Хотите C# и кодебихайнда - разрабатывайте на сильверлайте.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Taker1796 (1). |
29.05.2012, 20:17 | #15 |
Участник
|
Цитата:
Сообщение от a33ik
Я не говорил, что у меня заработало это решение с виртуальным каталогом, aspx страницами и прочее. У меня заработал код обновления поля родителя с открытого окна (я открыл одну запись из второй, на ней код заработал). Пока вы не написали, что у вас кастомная страница я думал, что у вас стандартная CRM страница. На худой случай - вебресурс. Как решить вашу проблему с хостингом aspx страницы не знаю. Хотите C# и кодебихайнда - разрабатывайте на сильверлайте.
|
|
29.05.2012, 20:25 | #16 |
Чайный пьяница
|
Цитата:
Можете вашу задачу выложить полностью, а то структурировать поток сознания пронёсшийся по этому треду мне под конец тяжёлого рабочего дня попросту тяжело.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
29.05.2012, 20:38 | #17 |
Участник
|
На форме в crm есть кастомная кнопка(не на риббоне). По её нажатию должна открыться кастомная страница c текстовым полем и кнопкой "Ок". После ввода значения в это поле и нажатии кнопки "Ок", введенное значение должно появиться в поле родительского окна crm.
|
|
29.05.2012, 20:54 | #18 |
Чайный пьяница
|
Раз такой сценарий - тем более не могу понять почему не пользоваться простыми доступными вебресурсами.
По поводу реализации - вам на самом деле даже не надо пытаться вызвать родительское окно. Советую: 1. Вызывать кастомное окно через window.showModalDialog примерно таким кодом: Код: var dialogresult = window.showModalDialog("Ссылка на ваше кастомное окно диалога"); Код: window.returnValue = document.getElementById("идентификатор вашего текстового поля").value; Код: Xrm.Page.getAttribute("name").setValue(dialogresult);
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 30.05.2012 в 16:57. |
|
|
За это сообщение автора поблагодарили: Taker1796 (1). |
30.05.2012, 16:05 | #19 |
Участник
|
Цитата:
Сообщение от a33ik
Раз такой сценарий - тем более не могу понять почему не пользоваться простыми доступными вебресурсами.
По поводу реализации - вам на самом деле даже не надо пытаться вызвать родительское окно. Советую: 1. Вызывать кастомное окно через window.showModalDialog примерно таким кодом: Код: var dialogresult = window.showModalDialog("Ссылка на ваше кастомное окно диалога"); Код: window.returnValue = document.getElementByIf("идентификатор вашего текстового поля").value; Код: Xrm.Page.getAttribute("name").setValue(dialogresult); |
|