30.05.2013, 02:38 | #1 |
Участник
|
Настраиваемый LookUp
Доброго времени суток.
У меня есть кастомный LookUp, в котором пользователь может выбрать значения 2 разных сущностей lookuptypeIcons = '/_imgs/ico_16_2.gif:/_imgs/ico_16_8.gif'; lookuptypenames = 'contact:2:Contact,systemuser:8:User'; lookuptypes = '2,8'; document.getElementById("requiredattendees").setAttribute("lookuptypes", lookuptypes); document.getElementById("requiredattendees").setAttribute("lookuptypenames", lookuptypenames); document.getElementById("requiredattendees").setAttribute("lookuptypeIcons", lookuptypeIcons); Xrm.Page.getControl("requiredattendees").addCustomView(viewId, 'contact', viewDisplayName, fetchXml, layoutXml, false); Xrm.Page.getControl("requiredattendees").addCustomView(viewId, 'systemuser', viewDisplayName, fetchXml1, layoutXml1, false); И есть 2 кнопки на форме, которые должны вызывать этот LookUp по-разному. Хотелось бы, после нажатия одной кнопки значение по умолчанию Look for было Contact, а второй - User. Подскажите, как это можно сделать? |
|
30.05.2013, 10:48 | #2 |
Участник
|
Цитата:
Сообщение от vasya-serega
Доброго времени суток.
У меня есть кастомный LookUp, в котором пользователь может выбрать значения 2 разных сущностей lookuptypeIcons = '/_imgs/ico_16_2.gif:/_imgs/ico_16_8.gif'; lookuptypenames = 'contact:2:Contact,systemuser:8:User'; lookuptypes = '2,8'; document.getElementById("requiredattendees").setAttribute("lookuptypes", lookuptypes); document.getElementById("requiredattendees").setAttribute("lookuptypenames", lookuptypenames); document.getElementById("requiredattendees").setAttribute("lookuptypeIcons", lookuptypeIcons); Xrm.Page.getControl("requiredattendees").addCustomView(viewId, 'contact', viewDisplayName, fetchXml, layoutXml, false); Xrm.Page.getControl("requiredattendees").addCustomView(viewId, 'systemuser', viewDisplayName, fetchXml1, layoutXml1, false); И есть 2 кнопки на форме, которые должны вызывать этот LookUp по-разному. Хотелось бы, после нажатия одной кнопки значение по умолчанию Look for было Contact, а второй - User. Подскажите, как это можно сделать? Установка атрибута defaulttype в состояние 2 или 8 перед открытием окна локапа решит Вашу проблему.
__________________
Читайте SDK!!! |
|
|
За это сообщение автора поблагодарили: vasya-serega (1). |
31.05.2013, 01:59 | #3 |
Участник
|
Спасибо, помогло!
|
|
06.06.2013, 01:28 | #4 |
Участник
|
При тестировании обнаружилась проблема - при вызове функции при нажатии кнопки на формах разных записей логика установки значений по умолчанию не работает
if(customerNotUser==true) { document.getElementById("requiredattendees").setAttribute("defaulttype", 2); Xrm.Page.getControl("requiredattendees").addCustomView(contactViewId , 'contact', viewContactName, fetchContactXml , layoutContactXml, false); Xrm.Page.getControl("requiredattendees").setDefaultView(contactViewId ); } else { document.getElementById("requiredattendees").setAttribute("defaulttype", 8); Xrm.Page.getControl("requiredattendees").addCustomView(userViewId, 'systemuser', viewUserName, fetchUserXml, layoutUserXml, false); Xrm.Page.getControl("requiredattendees").setDefaultView(userViewId); } Посмотрел в отладчике, значения всех переменных вроде нормальные... В чем может быть причина? |
|
06.06.2013, 03:48 | #5 |
Участник
|
Точнее где-то работает, а где-то нет. И не понятно логика бага
|
|
06.06.2013, 10:16 | #6 |
Участник
|
Если вы используете addCustomView то у вас создается "Настраиваемые представления" а в лукапах с двумя сущностями это вызывает ошибку при смене сущности.
Уже эту ошибку описывал тут |
|
06.06.2013, 21:12 | #7 |
Участник
|
spectr, вы пишите, что решить проблему можно с помощью создания дополнительных кастомных представлений для lead, account, systemuser. Для systemuser я как раз создаю, переписывание кода на
Xrm.Page.getControl("requiredattendees").addCustomView(contactViewId , 'contact', viewContactName, fetchContactXml , layoutContactXml, false); Xrm.Page.getControl("requiredattendees").addCustomView(userViewId, 'systemuser', viewUserName, fetchUserXml, layoutUserXml, false); if(customerNotUser==true) { document.getElementById("requiredattendees").setAttribute("defaulttype", 2); Xrm.Page.getControl("requiredattendees").setDefaultView(contactViewId ); } else { document.getElementById("requiredattendees").setAttribute("defaulttype", 8); Xrm.Page.getControl("requiredattendees").setDefaultView(userViewId); } результата не дало. На некоторых записях вью вместо контактов отображает пользователей. |
|
10.06.2013, 10:55 | #8 |
Участник
|
Я бы сделал так :
На онлоад (или первое действие по кнопке, нужно контролировать чтобы создание было одно): Код: Xrm.Page.getControl("requiredattendees").addCustomView("{00000000-0000-0000-0000-000000000001}", 'contact', viewContactName, fetchContactXml , layoutContactXml, true); Xrm.Page.getControl("requiredattendees").addCustomView("{00000000-0000-0000-0000-000000000002}", 'systemuser', viewUserName, fetchUserXml, layoutUserXml, true); Действие на первую кнопку: Код: document.getElementById("requiredattendees").setAttribute("defaulttype", 2); Кнопка два соответственно: Код: document.getElementById("requiredattendees").setAttribute("defaulttype", 8); |
|
10.06.2013, 22:14 | #9 |
Участник
|
Сроки поджимали, поэтому пришлось сделать немного грубовато и не совсем так, как хотелось.
if (customerNotUser) { lookuptypeIcons = '/_imgs/ico_16_2.gif:/_imgs/ico_16_8.gif'; lookuptypenames = 'contact:2:Contact,systemuser:8:User'; lookuptypes = '2'; } else { lookuptypeIcons = '/_imgs/ico_16_8.gif:/_imgs/ico_16_2.gif'; lookuptypenames = 'systemuser:8:User,contact:2:Contact'; lookuptypes = '8'; } document.getElementById("requiredattendees").setAttribute("lookuptypes", lookuptypes); document.getElementById("requiredattendees").setAttribute("lookuptypenames", lookuptypenames); document.getElementById("requiredattendees").setAttribute("lookuptypeIcons", lookuptypeIcons); Xrm.Page.getControl("requiredattendees").addCustomView(contactViewId , 'contact', viewContactName, fetchContactXml , layoutContactXml, false); Xrm.Page.getControl("requiredattendees").addCustomView(userViewId, 'systemuser', viewUserName, fetchUserXml, layoutUserXml, false); if(customerNotUser) { document.getElementById("requiredattendees").setAttribute("defaulttype", 2); Xrm.Page.getControl("requiredattendees").setDefaultView(contactViewId ); } else { document.getElementById("requiredattendees").setAttribute("defaulttype", 8); Xrm.Page.getControl("requiredattendees").setDefaultView(userViewId); } Mscrm.Utilities.click(document.getElementById("requiredattendees")); //А здесь берем, и присваиваем заново значения заново, причем все и сразу lookuptypeIcons = '/_imgs/ico_16_2.gif:/_imgs/ico_16_8.gif'; lookuptypenames = 'contact:2:Contact,systemuser:8:User'; lookuptypes = '2,8'; document.getElementById("requiredattendees").setAttribute("lookuptypes", lookuptypes); document.getElementById("requiredattendees").setAttribute("lookuptypenames", lookuptypenames); document.getElementById("requiredattendees").setAttribute("lookuptypeIcons", lookuptypeIcons); Если будет время, попробую ваш код. Приведенный выше, конечно, не ахти. Можно ссылку, если не трудно, где можно подробно почитать о параметрах addCustomView ? |
|
10.06.2013, 22:41 | #10 |
Чайный пьяница
|
Посмотрите тут - http://msdn.microsoft.com/en-us/libr..._addCustomView
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|