Плагин jQuery, asmSelect, не сохраняет порядок сортировки - PullRequest
2 голосов
/ 04 августа 2010

Итак, я использую плагин asmSelect для создания списков, но также пытаюсь использовать его для редактирования существующих списков.asmSelect позволяет вручную сортировать / упорядочивать выбранные параметры перед отправкой.

Моя проблема заключается в том, что всякий раз, когда я иду и собираю отсортированный пользователем список из базы данных, и пусть asmSelect выполняет свою функцию на моей странице, по умолчанию (потому что это множественный выбор) он просто упорядочивает выбранные параметры в любом порядкеПоявятся оригинальные опции выбора.Поэтому, не сохраняя мой отсортированный порядок вообще ...

Кто-нибудь еще видел эту проблему и есть решение?

Ответы [ 3 ]

1 голос
/ 22 августа 2012

Я также пытался построить изначально выбранный список в порядке из базы данных.В итоге я обновил asmselect. См. Обновленный код asmselect и пример здесь.

В моем jsp:

<select id="availableItems" class="multiselect" name="menuDishes" multiple="multiple" title="Select items">
    <c:forEach var="item" items="${myAvailableItems}">
        <option value="${item.id}" data-sortby="${fn:indexOf(mySelectedItems, item.name)}" ${fn:contains(mySelectedItems, item.name) ? 'selected="selected"' : ''}>${item.name}</option>
    </c:forEach>
</select>
0 голосов
/ 25 июня 2014

Поместите следующее, прежде чем начать asm select:

$('#id_of_your_select').html($("option", $('#id_of_your_select')).sort(function(a, b) { 
    var arel = $(a).attr('rel');
    var brel = $(b).attr('rel');
    return arel == brel ? 0 : arel < brel ? -1 : 1 
}));

Он гарантирует, что выбранные элементы расположены в том же порядке, в котором вы их указали.

$("select[multiple]").asmSelect({
    addItemTarget: 'bottom',
    animate: false,
    sortable: true,
    highlight: false
});

И убедитесь, что при сохранении строк в базе данных они поддерживают этот порядок, а когда вы собираете их при загрузке страницы, они также остаются в том же порядке.

0 голосов
/ 09 марта 2011

Та же проблема здесь.

В моем случае я заметил, что список из 12 элементов со значениями от 0 до 11 отсортирован как 0, 1, 10, 11, 2, 3 ... Я имею в виду упорядочение строк вместо числового порядка.Может быть, есть какой-нибудь способ заставить asm-select выполнить преобразование в числа или отсортировать по числовому порядку?

РЕДАКТИРОВАТЬ: не важно, я пытался использовать строку "option_1", "option_2" и т. Д.заказать.Если значения, которые он использует для упорядочения, не являются допустимой числовой строкой, он возвращается к порядку в виде строки.

Кхау, может быть, вы не сохраняете ордер в дополнительном поле или используете поле идентификатора базы данных, чтобы определить порядок, чтобы выйти из опций, где они хранятся?После того, как вы сохранили заказ (или обнаружили, что вы предпочитаете), нужно создать значение rel для кода заказа.Я генерирую что-то вроде этого:

<option value="202">A news item</option>
<option value="164">Another news item</option>
<option value="162">More boring news</option>
<option value="175" rel="option_00000" selected="selected">One of the selected news</option>
<option value="15" rel="option_00001" selected="selected">Another interesting selected news</option>
<option value="204" rel="option_00002" selected="selected">This interesting news was selected too</option>

это значение rel, которое упорядочивает список

...