我面临着与jq网格中的排序有关的问题,当我在列数据中输入简单的文本时,将数据按升序和降序完美地排序。
hello
test
master
data
lazy 但是当我给出某种复杂的字符串时,它不会以正确的方式执行排序。
001abc_Basic_Contract
100xyz_Basic_Contract
123_Basic_Contract
234_Basic_Contract
a_b_c_Basic_Contract
abc_Basic_Contract
abc001_Basic_Contract
Basic_Contract
Doc_1_Basic_Contract
Doc_13_Basic_Contract
Doc_14_Basic_Contract
EFAIL
EXE_Design_SG_DD
IDCMSExcellus
Letter_Design
SBCv1
SortTest_Basic_Contract
SortTest_Basic_Contract
TA
Tango
test_Basic_Contract
xyz_Basic_Contract当我将上述数据作为列数据时,它没有以正确的方式执行排序。
$("#grid").jqGrid({
data:mydata,
datatype: "local",
height: 250,
colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
colModel:[
{name:'id',index:'id', width:60, sorttype:"int"},
{name:'invdate',index:'invdate', width:90, formatter: 'date', formatoptions: { srcformat: 'ISO8601Long', newformat: 'Y-m-d H:i:s'}, sortable :true},
{name:'name',index:'name', width:100 , sorttype:'text', sortable:true },
{name:'amount',index:'amount', width:80, align:"right"},
{name:'tax',index:'tax', width:80, align:"right"},
{name:'total',index:'total', width:80,align:"right"},
{name:'note',index:'note', width:150}
],
multiselect: true,
sortable:false,
});如果我在Microsoft中对上述数据进行排序,它将给出不同的排序顺序。
请在这方面帮助我。
发布于 2015-10-20 21:13:29
如果我正确地理解了您的问题,那么在本例中,您需要使用locale字符串比较来设置自定义排序函数。
假设name列具有这样复杂的字符串值,然后将排序函数设置为
您还可以根据不同的排序需求更改此函数
colModel:[
...
{name:'name',index:'name', width:100 , sorttype:'text', sortfunc: function(a,b,d){
if(d==1)
return a.localeCompare(b);
else
return b.localeCompare(a);
}
},
...
或者,如果有多个列具有这样的值,则定义单独的函数,例如,
colModel:[
...
{name:'name',index:'name', width:100 , sorttype:'text', sortfunc: sortdata},
...
{name:'name2',index:'name2', width:100 , sorttype:'text', sortfunc: sortdata}
]
function sortdata(a,b,d){
if(d==1)
return a.localeCompare(b);
else
return b.localeCompare(a);
}
https://stackoverflow.com/questions/33207380
复制相似问题