AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.02.2010, 17:42   #1  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
PostBack
Решил модифицировать существующую в CRM страницу lookupsingle.aspx. Мне нужен его функционал по переносу listmember'ов из одной сущности в другю,НО с помощью него можно скопировать,но нельзя переместить! Т.е. строка остается в первичном листе. Так вот..задумка какая.. Я сделал точную копию этой страницы За исключением следующего.. добавил свою кнопку
Код:
.....
<% =RenderButtons() %>
</td>
</tr>
</table>
</td>
</tr>
</table>
<form id="form1" runat="server">    
	<div>
		<asp:Button ID="btnPost" style="display:none" OnClick="btnPost_Click" runat="server" Text="TEST" />
		<asp:TextBox ID="lblHiddenTargetList"   style="display:none" runat="server">hidden field</asp:TextBox>    
	</div>
 </form>
и обработчик события
Код:
<script runat="server">


	protected void btnPost_Click(object sender, EventArgs e)
	{
		string srt = "fdfdfdfdfd";
                       //тут будет удаление
	} 

</script>
так же сделал свое событие нажатия OK..
Код:
var btnpost = document.getElementById("btnPost");
    if(btnpost==null)return;
    btnpost.click();
Грамотно вызываю страницу чтобы отобразилась работа именно с моим листом и типом сущностей.

При нажатии выдается ошибка...
[InvalidOperationException: CRM Parameter Filter - Invalid parameter '__VIEWSTATE=/wEPDwUKMTMyNTI0NTE5OWRk' in Request.Form on page /MicrosoftCRM/_controls/lookup/lookTest.aspx
The raw request was 'POST /MicrosoftCRM/_controls/lookup/lookTest.aspx?class=membertypelistwithomission&objecttypes=4300&browse=0&id=%7b107FA1EB

Т.е. проблема с постбеком.. Что с этим можно сделать?
Есть другой путь удаления..через сервисы CRM, но об этом следующий вопрос..тут тоже не все так просто.
Старый 15.02.2010, 17:56   #2  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Друзья, решение есть,только это подразумевает редактирование реестра

Open up regedit and browse to HKEY_Local_Machine\Software\Microsoft\MSCRM.
Add new DWORD called DisableParameterFilter with value 1.
Старый 16.02.2010, 10:04   #3  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
В чем суть решения? Заменить копирование в другой список переносом? Вы должны понимать, что ваш подход нельзя назвать правильным. Ни с точки зрения SDK системы, ни с точки зрения здравого смысла. Если нужно не копировать, а именно перенести участников, то ваше решение явно не должно заключаться в "исправлении" кода лукапа! Лукап сделан для выбора нужных записей, то как вы обработаете результаты, которые он вернет - не должно заключаться в обработчике кнопки "ОК".
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 16.02.2010, 10:34   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Вот так выглядит обработчик меню "Копировать в другой маркетинговый список":
Код:
if (sAction == "copylistmember")
{
    var qs = new QueryString();
    _sListId = qs.get("oId","");
    var sMemberType = GetListMemberType();
    var itemObjectId = "";
    var itemObjectTypeCode = "";
    var bMakeCall = false;
    var lookupItems = LookupObjects(null, "single","membertypelistwithomission", "4300",0,null,"id="+CrmEncodeDecode.CrmUrlEncode(_sListId)+"&membertypecode="+CrmEncodeDecode.CrmUrlEncode(sMemberType),"1");
    
    if ( lookupItems )
    {
        if ( lookupItems.items.length > 0 )
        {
            itemObjectId = lookupItems.items[0].id;
            itemObjectTypeCode = lookupItems.items[0].type;
            bMakeCall = true;
        }
    }
    if(bMakeCall)
    {
        oResult = openStdDlg(prependOrgName("/_grid/cmds/dlg_addtolist.aspx?iObjType=") + CrmEncodeDecode.CrmUrlEncode(iObjType) + "&autoTrigger=1" + "&iTotal=" + CrmEncodeDecode.CrmUrlEncode(a.length) + "&sIds=" + CrmEncodeDecode.CrmUrlEncode(sIds) + sCustParams + "&itemObjectId=" +                     CrmEncodeDecode.CrmUrlEncode(itemObjectId) + "&itemObjectTypeCode=" + CrmEncodeDecode.CrmUrlEncode(itemObjectTypeCode), a, iX, iY );

        oResult = false;
    }
}
Я бы просто добавил в меню свой пункт, куда поместил приведенный выше код с модификациями в конце. Либо в виде вызова кастомной страницы, которая выполнит удаление, либо в виде Ява скрипта (наиболее вероятно, потому что мне так проще отлаживать). В любом случае препарировать лукап - не выход.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 16.02.2010, 16:44   #5  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Вот решение: http://www.axforum.info/forums/blog.php?b=83
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 16.02.2010, 18:39   #6  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Спасибо,я уже понял, что шел немного не той дорогой,так что реализовал через JavaScript. Ваш пост конечно просто гениально прост,но я его не пробовал)) Хотя сейчас уже в голове родился ещё один способ решения моей проблемы.

Здача была используя лукапное окно найти нужный маркетинговый список и перенести туда члена текущего маркетингового списка.

Последний раз редактировалось Kipetcoff; 16.02.2010 в 18:42.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Новой окно после PostBack'а Kipetcoff Dynamics CRM: Разработка 3 18.08.2009 16:55

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:51.