Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery jqgrid localReader不工作_Jquery_Json_Jqgrid - Fatal编程技术网

Jquery jqgrid localReader不工作

Jquery jqgrid localReader不工作,jquery,json,jqgrid,Jquery,Json,Jqgrid,使用情况是,我希望在客户端处理排序,在服务器端处理分页,因为记录量可能太大,我不想一次加载所有记录。 当前ui显示,因此下面的json包含它们和元数据。 page--当前页,total--总页数和记录数--总记录数 我与jqgrid进行了核对,我不明白这为什么不起作用 当数据设置为data:ret并且在localReader中指定root为数据时,ui不显示任何记录 当我将数据指定为data:ret.data但寻呼机(下一页的分页显示不起作用)时,ui显示记录 我的json数据如下所示: v

使用情况是,我希望在客户端处理排序,在服务器端处理分页,因为记录量可能太大,我不想一次加载所有记录。 当前ui显示,因此下面的json包含它们和元数据。 page--当前页,total--总页数和记录数--总记录数

我与jqgrid进行了核对,我不明白这为什么不起作用

当数据设置为data:ret并且在localReader中指定root为数据时,ui不显示任何记录

当我将数据指定为data:ret.data但寻呼机(下一页的分页显示不起作用)时,ui显示记录

我的json数据如下所示:

  var ret={"data":[{"id":"1","firstName":"John","lastName":"Doe"},     
           {"id":"2","firstName":"John","lastName":"Burns"},
           {"id":"3","firstName":"John","lastName":"Newman"},
           {"id":"4","firstName":"Mike","lastName":"Vargas"},               
           {"id":"5","firstName":"David","lastName":"Taylor"}],
   "page":1,"total":3,"records":24}
我的jquery如下所示:

       grid.jqGrid({
            datatype: "local",
            data: ret,
           // root:"oldcontacts",
            colNames:['ID', 'First Name','Last Name'],
            colModel:[
                {name:'id',index:'id', key: true, width:70, sorttype:"int"},
                {name:'firstName',index:'firstName', width:90},
                {name:'lastName',index:'lastName', width:100}

            ],
            localReader : {
               root :"data",
               page: "page",
               total: "total",
               records :"records"
            },
            search:true,
            pager:'#pager',
            //jsonReader: {cell:""},
            rowNum: 10,
            rowList: [5, 10, 20, 50],
            loadonce:false,
            sortname: 'id',
            sortorder: 'asc',
            viewrecords: true,
            sortable:false,
            cmTemplate: {sortable:true},//change to false if want
            multiselect:true,
            multiboxonly: false,
            height: "100%",
            caption: "Multiple search with local data",
            onSelectAll:function(aRowids,isSelected){
            // this is not used in this sample.. as I removed the check all button
              var i, count, id;
              for (i = 0, count = aRowids.length; i < count; i++) {
                   id = aRowids[i];
                   if(isSelected)
                     {mysel.pushObject(id);}
                     else
                    { mysel.removeObject(id);}

              }

              that.set('selection',mysel);
            },
            gridComplete: function(){

                          },              

            onSelectRow: function (id,isSelected,e) {
            //now lets tell jqgrid not to change to yellow on simple click
                Ember.$('#'+id).attr("aria-selected","false");// override default selection
                Ember.$('#'+id).removeClass("ui-state-highlight");// override default selection

                if (e.ctrlKey){
                if (isSelected){
                   mysel.pushObject(id);
                   Ember.$('#'+id).css('background','red');
                  }
                  else
                  {
                   Ember.$('#'+id).css('background','white');
                   mysel.removeObject(id);
                  }
                 that.set('selection',mysel);
                 }




        },

        });
grid.jqGrid({
数据类型:“本地”,
数据:ret,
//根:“旧联系人”,
colNames:['ID','First Name','Last Name'],
colModel:[
{name:'id',index:'id',key:true,width:70,sorttype:'int},
{name:'firstName',索引:'firstName',宽度:90},
{name:'lastName',索引:'lastName',宽度:100}
],
本地阅读器:{
根:“数据”,
第页:“第页”,
总计:“总计”,
记录:“记录”
},
搜索:对,
寻呼机:“#寻呼机”,
//jsonReader:{cell:},
rowNum:10,
行列表:[5,10,20,50],
loadonce:false,
sortname:'id',
排序器:“asc”,
viewrecords:是的,
可排序:false,
cmTemplate:{sortable:true},//如果需要,请更改为false
多选:对,
multiboxonly:错误,
高度:“100%”,
标题:“使用本地数据进行多次搜索”,
onSelectAll:函数(aRowids、isSelected){
//此示例中未使用此选项..因为我删除了“全部检查”按钮
变量i,计数,id;
for(i=0,count=aRowids.length;i
可能会解决您的问题?它使用
数据类型:“json”
loadonce:true
选项。在我看来,单独调用Ajax更好。通过修复
loadComplete
内部的选项
page
记录
lastpage
,以及显式调用带有相应参数的
updatePage
,可以解决寻呼机的主要问题。

感谢您的回复。我使用单独的ajax调用获取数据,并在将数据传递到jqgrid之前如上所述形成数据。如何在loadComplete上更新寻呼机?我试过了,但没用。。loadComplete:function(){page:“page”,total:“total”,records:“records”,grid.updatePage();},@user3630294:不客气!更改
页面
记录
最后一页
的技巧在
loadComplete
中,调用
updatePage
数据类型:“local”
的情况下有效。您需要以任何方式在
onPaging
中重新加载网格。因此我认为使用
datatype:“json”
loadonce:true
将使代码更短。