2012-03-19 35 views
0

我一直在工作qith jqGrid 4.3.1,但我使用額外的javascript方法來填充我的結果(它封裝了返回JSON的端點)。jqGrid分頁與結果數組

有沒有一種方法可以直接在jQGrid中設置結果數量,頁碼和可用頁面,並讓它正確顯示在尋呼機中?而不是在尋呼機中設置'箭頭'來觸發我的'gridreload函數()'?

的Javascript:

$j('#searchResultsGrid').jqGrid({ 
     pager: '#gridpager', 
     rowNum: 100, 
     height: 415, 
     width: 765, 
     colNames: ['Action','First Name','Last Name','Email','Type of Record','Company','Account Name'], 
     colModel: [ 
      { 
      name:'Invite', 
      index:'Invite', 
      width:50, 
      align: 'center', 
      sortable:false}, 
      { 
      name: 'FirstName', 
      index: 'FirstName', 
      width: 75 
      }, { 
      name: 'LastName', 
      index: 'LastName', 
      width: 75 
      },{ 
      name: 'Email', 
      index: 'Email', 
      width: 100 
      }, { 
      name: 'Type', 
      index: 'Type', 
      width: 75    
      },{ 
      name: 'Company', 
      index: 'Company', 
      width: 100    
      },{ 
      name: 'AccountName', 
      index: 'AccountName', 
      width: 100    
      }], 
      //add the buttons for adding 
     gridComplete: function(){ 
      ... 
      } 
     } 
    }); 

/* Wrapper Method for Endpoint */ 
    methodController.searchLeadsContacts($j('#searchTerm').val(),pageNum,function(event,result){ 
      $j.each(result.result.searchResults, function(i, record){ 
       var rowData = [{ 
       'Id': record.Id, 
       'FirstName': record.FirstName, 
       'LastName': record.LastName, 
       'Email': record.Email, 
       'Type': record.Type, 
       'Company': record.Company, 
       'AccountName': record.AccountName 
      }]; 
      $j('#searchResultsGrid').jqGrid('addRowData', record.Id, rowData[0]); 
      }); 
      $j('#searchResultsGrid').setGridParam({ rowNum: 100 }).trigger("refresh"); 

HTML:

  <table id="searchResultsGrid"></table> 
      <div id="gridpager"></div> 

回答

0

你永遠也不會使用舊addRowData特別是在循環。除了您所描述的問題addRowData是填充網格的最慢方式,因爲在頁面的每次修改之後,應該重新計算頁面上所有現有元素(甚至是之前添加的行)的位置。

你應該做的是使用jqGrid的data參數來創建帶有數據的網格。如果您使用gridview: true(我的默認選項),則包含的網格將在一次操作中放入網格中。

或者,您可以使用datatype: 'jsonstring'datastr的數據。在這種情況下,datastr的值可以是對象而不僅僅是JSON字符串。

如果您從服務器加載數據並可使用jQuery.ajax傳輸數據,則應使用datatype: 'json'。 jqGrid爲您提供了很多自定義的可能性,以便您可以實現jqGrid在內部爲您提供的實際和Ajax請求。

+0

感謝@ Oleg,我將在我的循環中刪除'addRowData',並嘗試將數組應用到jqGrid,並使用'.trigger('gridreload');'to重新加載它 – 2012-03-20 16:20:48

+0

@ jordan.baucke:設置'data'參數後,只調用'refreshIndex'方法很重要。 (請參閱[這裏](http://stackoverflow.com/a/5536734/315935)) – Oleg 2012-03-20 16:42:41