2 つの MultiSelect リストがあります。右のリストから左のリストに値を移動した後、左のリストをソートできますか?
button= new Button({
label: "move left",
onClick: lang.hitch(this, function(){
dijit.byId(leftListId).addSelected(dijit.byId(rightListId));
})
2 つの MultiSelect リストがあります。右のリストから左のリストに値を移動した後、左のリストをソートできますか?
button= new Button({
label: "move left",
onClick: lang.hitch(this, function(){
dijit.byId(leftListId).addSelected(dijit.byId(rightListId));
})
少なくとも直接的にはできません。これMultiSelect
は、私が考える最も単純なウィジェットの 1 つであり、単なるラッパーです。つまり、特別な機能は含まれておらず、並べ替え機能が必要な場合は自分で作成する必要があります。
自分で作成する最良の方法は、ウィジェットを拡張することです。例:
declare("dijit/form/MultiSelect", [MultiSelect], {
sort: function() {
var domNodes = Array.prototype.slice.call(this.containerNode.children);
domNodes.sort(function(a, b) {
if (a.innerHTML < b.innerHTML) {
return -1;
} else if (a.innerHTML == b.innerHTML) {
return 0;
} else {
return 1;
}
});
this.containerNode.innerHTML = "";
array.forEach(domNodes, function(node) {
this.containerNode.appendChild(node);
}, this);
}
});
これが行うことは非常に簡単です。という関数を追加してsort()
から、すべての子のリストを取得し、これらの子をsort()
配列の関数で並べ替えてから、すべての子を削除して並べ替えた子を追加します。
それを使用するには、次のようなことができdijit.byId(leftListId).sort()
ますaddSelected()
。
JSFiddle の例は、ここにあります。