【发布时间】:2014-02-03 02:24:03
【问题描述】:
在网页上使用 jqGrid 4.5.3,我有可以是文本或数字的数据。我在列上使用了自定义排序功能,但它没有按照我期望的方式排序。
我在网格中的行中有以下数据,这是它们被发送的顺序:
123
654
321
Test
James
如果我将相同的数据放入 Excel 中并对其进行排序,则顺序(从小到大)为:
123
321
654
James
Test
如果我在Excel中重新排序,从大到小,是:
Test
James
654
321
123
在我的 jQgrid 中,顺序总是首先是文本,然后是数字。两者都正确排序(在它们之间),但文本始终位于网格的顶部。自定义排序的代码是:
function myCustSort (myCell, rowObj ) {
var n = myCell.length;
var intRegex = /^\d+$/ ;
var checkNumeric;
checkNumeric = intRegex.test(myCell);
if (typeof myCell === "string") {
if ( checkNumeric === true) {
return parseInt( myCell);
}
else {
return myCell;
}
}
else {
return myCell;
}
} // end myCustSort
正在排序的列的colModel 是:
{name:"TestData",
index:"TestData",
width:30,
align:"center",
sorttype: function (cell, obj ) {
return myCustSort (cell) ;
},
xmlmap:"Rowset>Row>TestData"
},
我已经在自定义排序函数中显示,它正确地将数字计算为数字,将字符串计算为字符串,但是,我不能让它像 Excel 中的相同数据那样排序。
我已经查看了 jqGrid 的几个自定义排序函数的示例,但是它们正在对网格数据调用自定义排序,其中它按该单元格数据的子字符串进行排序。我一直无法找到一个正在排序的数据是数字和文本的混合体。
如果我在此列的自定义排序功能上遗漏了什么,请告诉我。谢谢!
【问题讨论】:
标签: jquery excel sorting jqgrid