Javascript 在免费jqgrid上定义自定义排序

Javascript 在免费jqgrid上定义自定义排序,javascript,jqgrid,Javascript,Jqgrid,我有一个名为InterestedValue的列,我想允许按下拉列表的标签进行排序 我发现了类似的问题,并实施了建议的解决方案,但它不起作用 本质上,没有发生任何事情,应用程序的行为与添加自定义sorttype之前完全相同。即使在其中添加警报,也不会发生任何事情、不会出现错误或其他任何情况 { name: 'InterestedValue', editable: true, sortable: true, formatter: 'select', width: 110, search: f

我有一个名为InterestedValue的列,我想允许按下拉列表的标签进行排序

我发现了类似的问题,并实施了建议的解决方案,但它不起作用

本质上,没有发生任何事情,应用程序的行为与添加自定义sorttype之前完全相同。即使在其中添加警报,也不会发生任何事情、不会出现错误或其他任何情况

{
    name: 'InterestedValue', editable: true, sortable: true, formatter: 'select', width: 110, search: false, edittype: 'select',
    editoptions: {
        value: InterestedStatusList,
    },
    sorttype: function (cellvalue)
    {
        return InterestedStatusList[cellvalue];
    }
}
我按照建议添加了loadonce:true,现在我可以正确地对数据进行排序,但是当我有比第一个屏幕中显示的记录更多的记录时,我无法将它们可视化

我的代码是:

$(gridId).jqGrid(//'setGroupHeaders',
       {              
           url: actionMethod,
           shrinkToFit: false,
           datatype: 'json',
           mtype: 'GET',
           loadonce: true,
           //sortable: true,
           colNames: [MyColumns],
           colModel: [
           {MyModel }
           ],
           pager: jQuery(pagerId), //jQuery('#pager'),
           rowNum: 10,
           rowTotal: 2000,
           rowList: [10, 20, 30, 40],
           height: '100%',
           //width:700,
           viewrecords: true,

           caption: caption,
           emptyrecords: 'No records to display',
           jsonReader: {
           root: "rows",
           page: "page",
           total: "total",
           records: "records",
           repeatitems: false,
           Id: "0"
           },
           //autowidth: true,
           multiselect: false,
           gridview: true,
           editurl: '/InvestorList/Edit',
           onSelectRow: function (id) {

           if (id) { 
               $(gridId).jqGrid("editRow", id, true, '', '', '', '', reload)
               //ORIGINAL CODE: $(gridId).editRow(id, true,'', '', '', '', reload);
               lastSelectedId = id;

           }
           },
           serializeRowData: function (postdata) {
           //var response = JSON.stringify(postdata);
           var s = '';//'<select>';
           $(postdata).each(function (index, data) {
               //s += '<option value="' + index + '">' + data + '</option>';
               $.each(data, function (k, v) {
               if (k == "InterestedValue")
                   s += v;//'<option value="' + k + '">' + v + '</option>';
               });

           });
           //alert("s=" + s);
           if (s.indexOf("100010002") != -1) { //"2_1") {
               if (confirm('Are you sure you want to deactivate this record? ')) {
               // do things if OK
               return postdata;
               }
               else
               return false;
           }
           return postdata;

           },
$(gridId).jqGrid(//'setGroupHeaders',
{              
url:actionMethod,
shrinkToFit:错,
数据类型:“json”,
mtype:'获取',
有一次:是的,
//可排序:是的,
colNames:[MyColumns],
colModel:[
{MyModel}
],
pager:jQuery(pagerId),//jQuery(“#pager”),
rowNum:10,
总数:2000,
行列表:[10,20,30,40],
高度:“100%”,
//宽度:700,
viewrecords:是的,
描述:描述,
emptyrecords:'没有要显示的记录',
jsonReader:{
根:“行”,
第页:“第页”,
总计:“总计”,
记录:“记录”,
重复项:false,
Id:“0”
},
//自动宽度:正确,
多选:错,
gridview:没错,
editurl:“/InvestorList/Edit”,
OnSetrow:功能(id){
如果(id){
$(gridId).jqGrid(“editRow”,id,true,,,,,,,,,,reload)
//原始代码:$(gridId).editRow(id,true,,'','',reload);
lastSelectedId=id;
}
},
serializeRowData:函数(postdata){
//var response=JSON.stringify(postdata);
var s=“”;/“”;
$(postdata)。每个(函数(索引、数据){
//s+=''+数据+'';
$。每个(数据、函数(k、v){
如果(k==“利息价值”)
s+=v;/“+v+”;
});
});
//警报(“s=”+s);
如果(s.indexOf(“100010002”)!=-1{/“2_1”){
如果(确认('您确定要停用此记录吗?')){
//如果可以的话就去做
返回postdata;
}
其他的
返回false;
}
返回postdata;
},
基本上,我看到了前十条记录,而我无法访问其余的记录。
如何解决此问题?

请在所有问题中填写您使用的jqGrid版本和fork(,或者版本I中的一些旧jqGrid添加了loadonce:true,但是现在我在显示多个页面时遇到了问题。如果添加
loadonce:true
,则应该更改服务器代码,以便它返回所有数据。您不需要实现服务器端分页。