2014-12-04 70 views
0

使用情况是我想处理客户端和服务器端的分页排序,因为记录的体积可能太大我不想一次加载所有记录。 目前ui显示,所以下面的json包含它们以及元数据。 页面 - 当前页面,总计 - 总页数和记录 - 记录总数。jqgrid localReader不工作

我检查与jqgrid我不明白为什么这是行不通的。

当数据设置为data:ret时,ui没有显示任何记录,而在localReader中,我指定root为数据。

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

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




     }, 

     }); 

回答

0

可能the answer将解决问题了吗?它使用datatype: "json"loadonce: true选项。看起来我更喜欢独立的Ajax调用。与寻呼机的主要问题可以通过固定的选项pagerecordslastpageloadComplete内部和updatepager具有相应参数的显式调用来解决。

+0

感谢您的回复。我使用一个单独的AJAX调用获取数据并将其传递到前的jqGrid形成如上述的数据。我如何更新loadComplete上的寻呼机?我试过这个,但它没有工作.. loadComplete:function(){ 页面:“页”, 总:“总”, 记录:“记录”, grid.updatepager(); }, – user3630294 2014-12-04 18:51:02

+0

@ user3630294:不客气! “本地”':不断变化的'page','records'和''loadComplete'和'updatepager'工程'数据类型的情况下,呼叫内lastpage'的伎俩。你需要以任何方式实现'onPaging'中的网格重新加载。所以,我认为'数据类型的用法:“JSON”'和'loadonce:TRUE'将会使你的代码更短。 – Oleg 2014-12-04 18:58:12