我有两个 MultiSelect 列表,在我将任何值从右侧列表移到左侧后,左侧列表是否可以排序?
button= new Button({
label: "move left",
onClick: lang.hitch(this, function(){
dijit.byId(leftListId).addSelected(dijit.byId(rightListId));
})
我有两个 MultiSelect 列表,在我将任何值从右侧列表移到左侧后,左侧列表是否可以排序?
button= new Button({
label: "move left",
onClick: lang.hitch(this, function(){
dijit.byId(leftListId).addSelected(dijit.byId(rightListId));
})
你不能,至少不能直接。这MultiSelect
是我认为最简单的小部件之一,它只是一个包装器。这意味着不包含任何特殊功能,如果您想拥有排序功能,您必须自己制作一个。
自己制作一个的最好方法是扩展小部件。一个例子:
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 。