所以,我正在使用asmSelect插件创建列表,但也尝试使用它来编辑现有列表。 asmSelect允许您在提交之前手动排序/排列所选选项。
我的问题是每当我从数据库中获取用户排序列表并让asmSelect在我的页面上执行它的操作时,默认情况下(因为它是多选)它只是以原始选项的顺序排列所选选项选择出现。因此,根本不保留我的排序顺序......
还有其他人看过这个问题并有解决方案吗?
答案 0 :(得分:1)
我还尝试按照数据库的顺序构建最初选择的列表。我最终更新了asmselect。 See updated asmselect code and example here.
在我的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>
答案 1 :(得分:0)
这里的问题相同。
在我的情况下,我注意到12个项目列表的值为0到11被排序为0,1,10,11,2,3 ......作为字符串排序而不是数字顺序,我的意思是。也许有一些方法可以强制asm-select转换为数字或按数字顺序排序?
编辑:没关系,我试图使用“option_1”,“option_2”等字符串来订购它。如果它用于排序的值不是有效的数字字符串,则它将作为字符串返回到订单。
Kchau,难道你不是在一个额外的字段中存储订单,或者使用数据库id字段来检测quitch存储的选项中的顺序?一旦您将订单存储(或检测到,您更喜欢),就需要为要订购的代码生成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值答案 2 :(得分:0)
在启动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
});
并确保在数据库中保存行时保持该顺序,当您在页面加载时收集它们时,它们的顺序仍然相同。