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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.06.2013, 15:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,631 / 848 (80) +++++++
Регистрация: 28.10.2006
axforum blogs: Мультиязычный CRM. Сортировка выпадающих списков
Источник: http://axforum.info/forums/blog.php?b=408
==============

Недавно я столкнулся с еще одной особенностью мультиязычных интерфейсов: порядок следования опций в списке определяется еще на этапе настройки, следовательно задается в базовом языке. Чаще всего это не критично, но если список опций содержит несколько сотен значений? Так вышло со списком стран, упомянутым мной в одном из предыдущих постов. Проблему, как водится, пришлось решать доработкой.

В результате родился скрипт приведенный ниже. Скрипт универсальный и может применяться к любому списку.
X++:
//name: имя контрола, который нужно отсортировать.//des: сортировать в обратном порядке (по умолчанию false)//ontop: массив кодов опций, кторые нужно поместить в начале списка (опционально)function sortOptions(name, des, ontop) { var control = Xrm.Page.getControl(name); if (control != null && control.getControlType() == "optionset") { var des = des || false; var ontop = ontop || []; var attribute = control.getAttribute(); var options = attribute.getOptions(); options.sort(function (o1, o2) { if (o1.text > o2.text) return des ? -1 : 1; if (o2.text > o1.text) return des ? 1 : -1; return 0; }); control.clearOptions(); var topOptions = []; for (var i = 0; i < options.length; i++) { var option = options[i]; if (option.value != "null") { var isInTop = false; for (var j = 0; j < ontop.length; j++) { if (ontop[j] == option.value) { isInTop = true; topOptions[j] = option; break; } } if (isInTop == false) { control.addOption(option); } } } //Добавляем элементы, которые должны быть сверху for (var i = 0; i < topOptions.length; i++) { var option = topOptions[topOptions.length - i - 1]; if (option) { control.addOption(option, 1); } } //Восстанавливаем выбор элемента attribute.setValue(attribute.getValue()); } }
p.s. Отсортировать список опций в параметрах атрибута все же следует. Пускай эта настройка годится только для базового языка, но так вы получите хотя бы какой-то прирост скорости сортировки за счет того что часть элементов уже упорядочена.

p.p.s. Так же в этом случае можно вставить дополнительную проверку: если язык пользователя базовый - выходим без сортировки. Микросекунды, но все равно приятно...


Источник: http://axforum.info/forums/blog.php?b=408
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Microsoft Dynamics CRM Team Blog: Creating and Publishing a Web Portal to an Azure Cloud Service Blog bot Dynamics CRM: Blogs 0 17.04.2013 23:11
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 13 Blog bot Dynamics CRM: Blogs 0 27.03.2013 22:12
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 12 Blog bot Dynamics CRM: Blogs 0 30.01.2013 01:11
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 10 Blog bot Dynamics CRM: Blogs 0 17.08.2012 03:27
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 4 Blog bot Dynamics CRM: Blogs 0 24.09.2011 01:16

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

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

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