20.06.2013, 15:11 | #1 |
Участник
|
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, напишите личное сообщение администратору. |
|
|
|