简体   繁体   English

最新 JQ Grid 中的排序问题

[英]Sorting issue in latest JQ Grid

I am facing issue related to sorting in jq grid ,when i enter simple text in column data in perfectly sort the data in both ascending and descending order eg我面临与 jq 网格中的排序相关的问题,当我在列数据中输入简单的文本时,以升序和降序对数据进行完美排序,例如

hello 
test
master
data
lazy 

but when i give some sort of complex string it doesn't perform sort in a correct manner eg但是当我给出某种复杂的字符串时,它不会以正确的方式执行排序,例如

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

when i give above mentioned data as column data it doesn't perform sort in correct manner.当我将上述数据作为列数据提供时,它不会以正确的方式执行排序。

  $("#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,

      });

If i sort the above mentioned data in Microsoft Excel,it will give different sorting order.如果我在 Microsoft Excel 中对上述数据进行排序,它将给出不同的排序顺序。

please help me in this regard.请在这方面帮助我。

If I understand your problem correctly then, you need to set custom sort function with locale string compare in this case.如果我正确理解您的问题,那么在这种情况下,您需要使用区域设置字符串比较来设置自定义排序函数。

suppose name column has such complex string values then set sort function like,假设 name 列具有如此复杂的字符串值,然后设置排序函数,例如,

you can also change this function according to different sort requirement您也可以根据不同的排序要求更改此功能

 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); } }, ...

OR if you have multiple column with such values then define separate function like,或者,如果您有多个具有此类值的列,则定义单独的函数,例如,

 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); }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM