【问题标题】:How to change combobox selected values display order如何更改组合框选定值的显示顺序
【发布时间】:2013-08-21 08:01:56
【问题描述】:

我想更改组合框中选定记录的显示顺序。原因是,正如您从屏幕截图中看到的那样,组合框列表如此之长,因此员工无法轻松看到所选值。是否有任何方法/功能可以根据所选记录索引更改显示值排序顺序?

【问题讨论】:

  • 我认为真正的问题可能是,组合框是要走的路。如果它足够长,您必须对其进行排序,那么您可能需要考虑替代方案。
  • 亲爱的 Jeff,我是这么认为的,但员工不知道记录名称。
  • 多选组合不是更简单的方法吗?请参阅this page 上的第三个示例。
  • 亲爱的 Rixo,我做了那个示例,但是您也可以看到列表名称,这对我来说是不可行的 :(
  • 那么this page 上的第二个示例可能对您来说更容易实现,即使它可能对用户不太友好。

标签: extjs combobox extjs4


【解决方案1】:

您可以使用custom function sort 商店。这将反映在组合框中。

应该是这样的:

combo.getStore().sort([{
    sorterFn: function(a, b) {
        if (a.get('selected')) {
            if (b.get('selected')) {
                return a.get('name').localeCompare(b.get('name'));
            } else {
                return -1;
            }
        } else if (b.get('selected')) {
            return 1;
        } else {
            return a.get('name').localeCompare(b.get('name'));
        }
    }
}]);

【讨论】:

  • 亲爱的rixo,如果我没记错a,b选择的值和目标值,对吧?
  • ab 是要比较的两条记录。 -1 的返回值表示 a 在 b 之前,1 是相反的,0 表示它们具有相同的顺序(请参阅sorterFn 的文档)。
  • 我的示例代码的问题是我不知道你如何处理记录的选择状态,所以我假设这会反映在记录的一个字段中(“selected”,在我的例子)。
  • 另一个选项是在 store 中维护另一个字段,如 sortid,默认情况下添加值 100 或增加当前 id 值+100。当用户选择记录时,使用小于 100 的值更新记录或减少当前 id 值 100。在商店排序字段的字段中使用它
猜你喜欢
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多