2012-03-19 21 views
0

私はqith jqGrid 4.3.1で作業していましたが、私はJSoundを返すエンドポイントをカプセル化して結果を取り込むためにJavaScriptメソッドを追加しています。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を記述した問題は、ページを変更するたびに、ページ上の既存の要素(以前に追加された行も)の位置を再計算する必要があるため、グリッドを埋める最も遅い方法です。

あなたがすべきことは、データを含むグリッドを作成するために、dataパラメータjqGridを使用することです。 gridview: true(私のデフォルトオプション)を使用する場合は、グリッドの包含が1回の操作でグリッドに配置されます。

また、datatype: 'jsonstring'datastrをデータと併用することもできます。この場合、datastrの値はオブジェクトであり、JSON文字列だけではありません。

サーバーからデータをロードし、を使用してデータを転送する場合は、datatype: 'json'を使用する必要があります。 jqGridは多くのカスタマイズ可能性を提供するので、jqGridが内部的に行う実質的なリクエストとAjaxリクエストを実装することができます。

+0

感謝@Oleg、私のループで 'addRowData'を削除し、jqGridに直接配列を(私はそれを処理した後に)適用し、 '.trigger( 'gridreload');'を使ってそれを再ロードする –

+0

@ jordan.baucke: 'data'パラメータを設定した後で' refreshIndex'メソッドを呼び出すことだけが重要です。 ([ここ](http://stackoverflow.com/a/5536734/315935)を参照) – Oleg