如何更改组合框选定值的显示顺序

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

以上是关于如何更改组合框选定值的显示顺序的主要内容,如果未能解决你的问题,请参考以下文章

如何更改代码以使组合框显示 displayField 值列表

如何在代码隐藏中更改组合框上的选定项

如何更改 Ext js 组合框中某些值的索引

Datagridview组合框未在单击/编辑时选择

Vba代码显示组合框中选定的数据

RowDetailsTemplate 中的组合框在选定列之前更新所有内容