如果默认的排序行为不满足您的需求,您可以自定义数据网格(datagrid)的排序行为。
最基础的,用户可以在列上定义一个排序函数,函数名是 sorter。这个函数将接受两个值,返回值将如下:
valueA > valueB => 返回 1
valueA < valueB => 返回 -1
<table id="tt"></table>
$('#tt').datagrid({ title: 'Custom Sort', iconCls: 'icon-ok', width: 520, height: 250, singleSelect: true, remoteSort: false, columns: [[{ field: 'itemid', title: 'Item ID', width: 60, sortable: true }, { field: 'listprice', title: 'List Price', width: 70, align: 'right', sortable: true }, { field: 'unitcost', title: 'Unit Cost', width: 70, align: 'right', sortable: true }, { field: 'attr1', title: 'Attribute', width: 120, sortable: true }, { field: 'date', title: 'Date', width: 80, sortable: true, align: 'center', sorter: function(a, b) { a = a.split('/'); b = b.split('/'); if (a[2] == b[2]) { if (a[0] == b[0]) { return (a[1] > b[1] ? 1 : -1); } else { return (a[0] > b[0] ? 1 : -1); } } else { return (a[2] > b[2] ? 1 : -1); } } }, { field: 'status', title: 'Status', width: 40, align: 'center' }]] }).datagrid('loadData', data);
您可以从这段代码中看到,我们为 date 列创建了自定义的 sorter。日期的格式是 'dd/mm/yyyy',可以轻松的按年月日排序。