sorting - dojo 1.10 添加 CheckedMultiSelect 的排序行为

标签 sorting dojo

大家好,我拼命尝试对 CheckedMultiSelect 进行排序,但运气不佳,似乎尽管更改了存储中数据的顺序,但它始终按字母顺序显示。

作为道场相对较新的人,我尝试四处寻找教程,但可惜我没有任何乐趣。

有人可以向我解释如何最好地对由内存存储填充的 CheckedMultiSelect 中的数据进行排序吗?

代码:

var store = new Memory({'data', : data});
//where this is my CheckedMultiSelect box
this._set("store", store);

在我的 postCreate 函数中,我现在这样做:

this.options = this.store.query({}, {sort: [{attribute: "name", descending: "true"}]});
this._set("labelAttr", "name");
 console.log(this.options);

我可以在 firebug 和控制台中看到数据的顺序是正确的,但是现在我除了复选框之外看不到任何东西,该选择的值应该有一个空格)。

我不知道这是否有帮助,但这是设置填充多重选择的数据的代码,之前的所有内容只是将字符串解析到存储对象中。

无论我做什么,我都无法更改顺序,即使更改存储数据中元素的顺序也不会产生盲目的差异,我猜测 CheckedMultiSelect 存在某种行为排序但仅此而已;一个猜测。

最佳答案

您设置 sortByLabel: false,然后提供 queryOptions 对象(请参见下面的示例)。

至于为什么我们需要sortByLabel,请参阅_FormSelectWidget :

    // sortByLabel: Boolean
    //      Flag to sort the options returned from a store by the label of
    //      the store.
    sortByLabel: true,

...虽然似乎有plans to deprecate it .

示例如下:

var checkedMultiSelect = new CheckedMultiSelect ({
    dropDown: true,
    multiple: true,
    labelAttr: "label", // Need this to be able to use Memory directly
    sortByLabel: false, // Need this to override sort
    queryOptions: {     // Now, finally, specify sort order.
        sort: [
          {attribute:'sortByMeFirst'},
          {attribute:'sortByMeSecond', descending: true}
        ]
    },
    store: memoryStore
}, "dropdown");

参见:jsfiddle sorting a CheckedMultiSelect

关于sorting - dojo 1.10 添加 CheckedMultiSelect 的排序行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31165677/

相关文章:

javascript - dojo dgrid 树,子行位置错误

dojo - 如何优化 Dojo 加载时间?

java - 为什么这个排序不起作用

sorting - Elasticsearch URI按字段名称排序

dojo - 是否有类似于 JQuery 插件 FullCalendar 的 Dojo 日历?

javascript - 从其他 JS 文件访问函数 - DOJO

javascript - 为什么我的 Dojo 图表中的图例没有显示颜色?

Python 尝试在按数字排序后按字母顺序对列表进行排序

c++ - 如何在 C++ 中使用 sort() 函数一起做某事?

c# - 在 Reactive Extensions 中按预定义的顺序对 Observable 进行排序