我有一个像我这样设置的jqGrid
gridAltMpn.jqGrid({
autowidth: true,
shrinkToFit: true,
datatype : 'local',
data : input,
height : '100',
scrollrows: true,
scrollOffset : '0',
hidegrid : false,
colNames : [ 'P', 'MPN' ],
colModel : [
{ name : 'Col1', width : 30, align:'center' },
{ name : 'Col2', width : 250, sorttype: 'integer'}
],
pager : '#altmpn_pager',
pagerpos : 'left',
scroll: 50,
gridview : true,
caption : 'A useful table title',
emptyRecordText : '<div id="no_data_msg" style="text-align:center"> No Results Found</div>',
hoverrows : true,
onSelectRow: function(id) {
var gsr = gridAltMpn.jqGrid('getGridParam', 'selrow');
if (gsr) {
var rowData = gridAltMpn.jqGrid('getRowData', gsr);
if ($("input[name='optInvInqType']:checked").val() == 'MPN') {
getInvInq("MPN", rowData.MPN);
}
}
},
loadComplete: function() {
gridAltMpn.setSelection(gridAltMpn.getDataIDs()[0], true);
}
});
此网格中的数据如下所示
XX 774860A6
774860A8
774860A4
774860A3
774860A10
STARTER, PNEUM,PW4000
当第一次加载网格时,它很好,但如果用户想要按第二列排序,它会像这样结束
774860A10
774860A3
774860A4
XX 774860A6
774860A8
STARTER, PNEUM,PW4000
774860A10应该像整数排序一样追随774860A8。我不能使用整数排序,因为这些不是整数,因为那里有一些字母字符。换句话说,我希望文本条目排序为整数。我是否需要使用自定义排序例程然后使用我的Javascript来执行类似排序的整数?我也不需要在第一次排序,因为我的服务器按第一列对其进行排序。用户可能希望按第二列排序
答案 0 :(得分:1)
您应该使用自定义函数进行此类排序。
为此,请将jqgrid的sort type属性设置为自定义函数。如this link中所述,排序类型可以具有以下值。
sorttype:
int/integer - for sorting integer
float/number/currency - for sorting decimal numbers
date - for sorting date
text - for text sorting
function - defines a custom function for sorting. To this function we pass the value to be sorted and it should return a value too.
自定义函数可以是这样的:(来自Oleg对this link的回答中的this question。)
colModel: [
{name:'Posn', index:'Posn', width:100, sorttype:
function(cell)
{
//Here you have to apply your own logic
if (cell=='GK') return '0';//returns the sort order
if (cell=='DEF') return '1';
if (cell=='MID') return '2';
if (cell=='STR') return '3';
}
},
顺便说一下,您可以设置jqgrid的sortname
属性来设置初始加载时间排序的列。