首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最新JQ网格中的排序问题

最新JQ网格中的排序问题
EN

Stack Overflow用户
提问于 2015-10-19 05:45:18
回答 1查看 641关注 0票数 2

我面临着与jq网格中的排序有关的问题,当我在列数据中输入简单的文本时,将数据按升序和降序完美地排序。

代码语言:javascript
复制
hello 
test
master
data
lazy 

但是当我给出某种复杂的字符串时,它不会以正确的方式执行排序。

代码语言:javascript
复制
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

当我将上述数据作为列数据时,它没有以正确的方式执行排序。

代码语言:javascript
复制
  $("#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中对上述数据进行排序,它将给出不同的排序顺序。

请在这方面帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-20 21:13:29

如果我正确地理解了您的问题,那么在本例中,您需要使用locale字符串比较来设置自定义排序函数。

假设name列具有这样复杂的字符串值,然后将排序函数设置为

您还可以根据不同的排序需求更改此函数

代码语言:javascript
复制
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);	
               }
           },
           ...

或者,如果有多个列具有这样的值,则定义单独的函数,例如,

代码语言:javascript
复制
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);			
	
}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33207380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档