我有以下情况在软件中,store combobox的特征由客户端定义为String,但combobox的类型为:A 1 A 11 A 2 A 21 A 3.但我的客户需要一个像下面这样的A1A2A3A11A21...我怎样才能从前面的威胁中获得这些信息并正确排序?
3j86kqsm1#
你需要使用排序器功能,并根据你的用例更新逻辑,如下所示,
Ext.application({ name: 'YourApp', launch: function () { var Store = Ext.create('Ext.data.Store', { data: [ { sampledata: 'A 1' }, { sampledata: 'A 11' }, { sampledata: 'A 2' }, { sampledata: 'A 21' }, { sampledata: 'A 3' } ], sorters: [{ sorterFn: function(item1, item2) { var pattern = /([A-Za-z]+) (\d+)/; var match1 = item1.get('sampledata').match(pattern); var match2 = item2.get('sampledata').match(pattern); var groupComparison = match1[1].localeCompare(match2[1]); if (groupComparison !== 0) { return groupComparison; } var num1 = parseInt(match1[2], 10); var num2 = parseInt(match2[2], 10); return num1 - num2; } }] }); Ext.create('Ext.form.ComboBox', { store: Store, displayField: 'sampledata', fieldLabel: 'ComboBox', renderTo: Ext.getBody() }); }});
Ext.application({
name: 'YourApp',
launch: function () {
var Store = Ext.create('Ext.data.Store', {
data: [
{ sampledata: 'A 1' },
{ sampledata: 'A 11' },
{ sampledata: 'A 2' },
{ sampledata: 'A 21' },
{ sampledata: 'A 3' }
],
sorters: [{
sorterFn: function(item1, item2) {
var pattern = /([A-Za-z]+) (\d+)/;
var match1 = item1.get('sampledata').match(pattern);
var match2 = item2.get('sampledata').match(pattern);
var groupComparison = match1[1].localeCompare(match2[1]);
if (groupComparison !== 0) {
return groupComparison;
}
var num1 = parseInt(match1[2], 10);
var num2 = parseInt(match2[2], 10);
return num1 - num2;
}]
});
Ext.create('Ext.form.ComboBox', {
store: Store,
displayField: 'sampledata',
fieldLabel: 'ComboBox',
renderTo: Ext.getBody()
字符串
1条答案
按热度按时间3j86kqsm1#
你需要使用排序器功能,并根据你的用例更新逻辑,如下所示,
字符串