在Sencha Touch 2.1中按连字符后的首字母排序,分组列表
Sort, group list in Sencha Touch 2.1 by first letter after hyphen if present
我有数据集要在使用Sencha Touch 2.1的列表中使用,其中大多数项目以前缀开头(例如p -, S-, CSV-等)。然而,有些人却没有。
前缀与列表排序和分组无关(因为前缀不是用户将要查找的)。如果所有条目都有前缀,并且前缀都是单个字母,我就按第三个字母排序。由于情况并非如此,我真的不知道如何继续。
因此,我想建立一个条件分组排序函数,如下所示:如果{name}包含连字符:按第一个连字符后的第一个字母排序/分组,否则:按第一个字母
排序此外,一些名称将是相同的,没有前缀(例如p -Albumin, U-Albumin),如果字符串的其余部分是相同的,我希望与"白蛋白"的行排序他们的前缀。此外,即使有前缀,一些字符串将是相同的,另一个字段,例如。"age"不同
{ name: 'P-Albumin', age: '40 - 50' },
{ name: 'P-Albumin', age: '20 - 30' },
{ name: 'CSV-Albumin', age: '30' },
{ name: 'ASAT', age: '30'},
将在字母A下分组,并进行排序,使年龄等于20 - 30的行位于等于40 - 50的行之前,而前缀为CSV-的行依次位于它们之前,ASAT留在最后。
对于按名称排序,您可以在模型中创建一个转换字段。
Ext.define('MyApp.model.MyModel', {
extend : 'Ext.data.Model',
config : {
fields : ['name', 'age',
{
name : 'formattedName',
type : 'string',
convert : function(v, record) {
var unformattedName = record.get('name');
if (unformattedName.indexOf("-") != -1) {
return unformattedName.substring(unformattedName
.indexOf("-"));
} else {
return unformattedName;
}
}
}]
}
});
现在你可以在你的存储配置
中设置排序优先级Ext.define('MyApp.store.MyStore', {
extend : 'Ext.data.Store',
config : {
model : "MyApp.model.MyModel",
sorters: 'formattedName, name, age'
...
}
});
存储首先查看没有前缀的格式化名称,然后查看包含前缀的完整名称,最后查看年龄。
相关文章:
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- jQuery拖动到相对位置的可排序列表中时出现可拖动辅助对象位置问题
- jQuery带计数器的可排序列表
- 我们可以在 CouchDB 中对排序列表视图进行排序吗?
- SharePoint :按日期排序列表
- jQueryUI可排序-从可排序列表中删除li
- Rails3-可排序列表不能与wysihtml5一起工作
- 如何同步包含克隆元素的jquery可排序列表
- 无法将id放在Jquery插件生成的模式中的未排序列表上
- 为未排序列表设置onclick()属性
- Mvc4将Jquery可排序列表项的顺序保持到控制器
- 无法从jQuery可排序列表中删除新添加的项
- iframe内容可编辑,位于jqueryUI可排序列表项中
- 对象的数组列表的Javascript排序列表-基于特定的数组列表
- 动态生成<选择>未显示已排序列表中的第一个项目
- 从 ajax 调用到 jquery UI 可排序列表构建 html
- 使用 jqueryui 的多个可排序列表 - 不希望项目在列表组之间混合
- jQuery - 获取可排序列表的索引
- jQuery - 排序后更新可排序列表
- YUI 轮播导航按钮在排序列表下