2

因此,我使用asmSelect插件来创建列表,但也尝试使用它来编辑现有列表。asmSelect 允许您在提交之前手动排序/排列选定的选项。

我的问题是每当我去从数据库中获取用户排序列表并让 asmSelect 在我的页面上执行它的操作时,默认情况下(因为它是一个多选)它只是按照选择中原始选项出现的任何顺序对所选选项进行排序. 因此,根本不保留我的排序顺序......

还有其他人看到这个问题并有解决方案吗?

4

3 回答 3

1

我还尝试按照数据库中的顺序构建最初选择的列表。我最终更新了 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>
于 2012-08-22T12:33:43.853 回答
0

这里同样的问题。

在我的例子中,我注意到一个包含 0 到 11 的 12 项列表被排序为 0、1、10、11、2、3 ......我的意思是字符串排序而不是数字顺序。也许有一些方法可以强制 asm-select 转换为数字或按数字顺序排序?

编辑:没关系,我试图使用“option_1”、“option_2”等字符串来订购它。如果它用于排序的值不是有效的数字字符串,它会回退到作为字符串排序。

Kchau,可能是您没有将订单存储在额外的字段中,还是使用数据库 id 字段来检测订单以退出存储的选项?一旦您存储了订单(或检测到您喜欢的订单),就需要为要订购的代码生成 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 值对列表进行排序

于 2011-03-09T16:19:43.267 回答
0

在启动 asm 选择之前放置以下内容:

$('#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
});

并确保当您将行保存在数据库中时,它们保持该顺序,并且当您在页面加载时收集它们时,它们也仍然处于相同的顺序。

于 2014-06-25T06:42:59.520 回答