如何更改组合框选定值的显示顺序
Posted
技术标签:
【中文标题】如何更改组合框选定值的显示顺序【英文标题】:How to change combobox selected values display order 【发布时间】:2013-08-21 08:01:56 【问题描述】:我想更改组合框中选定记录的显示顺序。原因是,正如您从屏幕截图中看到的那样,组合框列表如此之长,因此员工无法轻松看到所选值。是否有任何方法/功能可以根据所选记录索引更改显示值排序顺序?
【问题讨论】:
我认为真正的问题可能是,组合框是要走的路。如果它足够长,您必须对其进行排序,那么您可能需要考虑替代方案。 亲爱的 Jeff,我是这么认为的,但员工不知道记录名称。 多选组合不是更简单的方法吗?请参阅this page 上的第三个示例。 亲爱的 Rixo,我做了那个示例,但是您也可以看到列表名称,这对我来说是不可行的 :( 那么this page 上的第二个示例可能对您来说更容易实现,即使它可能对用户不太友好。 【参考方案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
选择的值和目标值,对吧?
a
和 b
是要比较的两条记录。 -1
的返回值表示 a 在 b
之前,1
是相反的,0
表示它们具有相同的顺序(请参阅sorterFn
的文档)。
我的示例代码的问题是我不知道你如何处理记录的选择状态,所以我假设这会反映在记录的一个字段中(“selected”,在我的例子)。
另一个选项是在 store 中维护另一个字段,如 sortid,默认情况下添加值 100 或增加当前 id 值+100。当用户选择记录时,使用小于 100 的值更新记录或减少当前 id 值 100。在商店排序字段的字段中使用它以上是关于如何更改组合框选定值的显示顺序的主要内容,如果未能解决你的问题,请参考以下文章