ExtJS 5.0.1排序数据存储区

时间:2016-09-01 15:10:33

标签: javascript sorting extjs

我有一个组合框,其中填充了以下定义的国家/地区列表。但是,当我加载组合框时,条目将根据它们在数据库中的顺序进行填充。我希望组合框按字母顺序加载。任何人都可以协助我如何对数据存储区进行排序吗?

商店定义

Tool.model.Base.defineModel(
    'Country',
    [{name: 'name', type: 'string'},
    {name: 'code', type: 'string'},
    ],
    true
);

组合框代码

{
xtype: 'combobox',
labelAlign: 'top',
fieldLabel: 'Country',
id: 'CountrySelectField',
name: 'country_id',
store: 'Country',
displayField: 'name',
valueField: 'id',
width: 300,
allowBlank:false,
}

2 个答案:

答案 0 :(得分:1)

您必须在定义期间向商店添加分拣机:

display: none

或在运行时:

sorters:[{
    property:'name',
    direction:'ASC'
}]

答案 1 :(得分:1)

var countries = Ext.create('Ext.data.Store', {
    fields: ['country', 'code'],
    data : [
        {"country":"USA", "code":"USA"},
        {"country":"Belgium", "code":"BEL"},
        {"country":"Bosnia", "code":"BOS"},
        {"country":"Uruguay", "code":"URU"},
        {"country":"Denmark", "code":"DEN"},
        {"country":"Canada", "code":"CAN"}
        //...
    ],
    sorters:[{
    property:'country',
    direction:'ASC'
}]
});

Ext.create('Ext.form.ComboBox', {
    fieldLabel: 'Country',
    store: countries,
    queryMode: 'local',
    displayField: 'country',
    valueField: 'code',
    renderTo: Ext.getBody()
});

https://fiddle.sencha.com/#fiddle/1g69