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>

リストを並べ替えるのは相対値です

于 2011-03-09T16:19:43.267 に答える
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
});

また、データベースに行を保存するときにその順序が維持され、ページの読み込み時に行を収集するときにも同じ順序であることを確認してください。

于 2014-06-25T06:42:59.520 に答える