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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.10.2013, 21:28   #9  
kalina is offline
kalina
Участник
MCBMSS
 
25 / 16 (1) ++
Регистрация: 12.07.2011
Адрес: Израиль
Тоже столкнулся с проблемой изменения обычного лукапа в мульти.
Сразу скажу, что проверял в IE10 и Chrome для СРМ 2011 на ролапе 13.

Я пытался изменить обычный лукап на мульти, в котором можно выбрать несколько записей одного типа.
Но у меня проблема была в том, что такого кода...
Код:
document.getElementById("someentitynameid").setAttribute("lookupstyle", "multi");
...хватало только для визуальной имитации мульти лукапа:
  • onChange срабатывал только для первого выбранного значения
  • getValue давал только одно значение
  • если лукап был пустым, то onChange не срабатывал, а getValue давал NULL
Одним словом было понятно, что лукап остался single.

В моем случае не понадобилось ничего вроде этого (ниже), т.к. не нужно да и не помогает и ничего не дает:
Код:
document.getElementById("someentitynameid").setAttribute("lookuptypes", "10063");
document.getElementById("someentitynameid").setAttribute("lookuptypenames", "someentityname:10063:Someentityname");
document.getElementById("someentitynameid").setAttribute("lookuptypeIcons", "/_imgs/ico_18_customEntity.gif");
document.getElementById("someentitynameid").setAttribute("defaulttype", "10063");
После многочасового реверсинжиниринга Майкрософтовского кода (не без помощи Konstantin Katsovich, за что ему огромное спасибо), я нашел переменную, которая получает значение для каждого лукапа на форме во время загрузки формы:
  • "single" = 1
  • "multi" = 2
  • "subject" = 3 (без понятия, для какого случая)
Когда закрывается окно выбора для лукапа, есть проверка этой переменной, и если у вас в лукапе много значений (это они умеют проверить, не смотря на то, что getValue дает только одно значение или NULL), а она не равна 2, то извините...

Решение:
к вышеупомянутой строчке, добавить еще одну:
Код:
document.getElementById("someentitynameid").setAttribute("lookupstyle", "multi");
Xrm.Page.getAttribute("someentitynameid")._attribute.$1a_2 = 2;
Если кому интересно, переменная находится в обьекте Mscrm.LookupAttribute.prototype, а получает значение в функции initializeFromDomElement. Все это находится в файле: CRMFolderPath\CRMWeb\_static\_forms\Form.js

Конечно, это total unsupport, но работает.
Если кто знает более поддерживамое решение, прошу поделиться

Последний раз редактировалось kalina; 18.10.2013 в 21:30.
Теги
crossbrowsing, lookup, multi, rollup 13, кроссбаузерность, crm2011

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Leon's CRM Musings: Setting Multi-Level Categories Against a Record Codelessly Blog bot Dynamics CRM: Blogs 0 26.01.2012 19:12
К чему примотать multi-select lookup Tony Green Dynamics CRM: Разработка 1 20.08.2010 15:32
CRM DE LA CREME! Some more useful javascripts for MS CRM Blog bot Dynamics CRM: Blogs 0 04.05.2010 11:05
mscrmblog: Mini Preview Window for Contact Lookup Field Blog bot Dynamics CRM: Blogs 0 10.03.2010 01:05
Jim Wang: CRM Filtered Lookup Multi Blog bot Dynamics CRM: Blogs 0 06.08.2009 06:11

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

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

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