|  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> <asp  ropDownList 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> </asp  ropDownList> </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# и кодебихайнда - разрабатывайте на сильверлайте.  И как мне тогда делать то?) Создать страницу html или aspx, написать в ней код, чтобы значение её поля передавалось в родительскую страницу crm. Что потом то? | 
|  | 
|  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); | 
|  |