2016-04-19 14 views
0

(フリー)jqGridは、グリッドがロードされる前にpostDataを設定できるコールバック関数を提供しますか?グリッドを再読み込みせずにpostdataを設定するコールバック?

私の場合、でjqGridを使用しているので、擬似postDataです。 グリッドにフィルタを適用するのにpostDataを使用しています。私はこのデータをajax呼び出しで読み込みます。

サーバーからすべてのグリッドデータを一度に読み込みたいのですが、ローカルにフィルタを適用します。したがって、ユーザーがこれらのフィルタを変更すると(たとえば、ツールバーの検索/フィルタリングを使用して)、ローカルデータに適用されます。

私はすでに試してみました:コールバック関数でも

beforeInitGrid : function() 
{ 
    $("#grid").jqGrid('setGridParam', { 
     search:  true, 
     postData : {"toolbar":[{"name":"customer","value":"difranco"}],"postdata":{"_search":"true","nd":"1461054190117","rows":"30","page":"1","sidx":"my_date","sord":"asc","totalrows":"10000","filters":"{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"customer\",\"op\":\"cn\",\"data\":\"difranco\"}]}"},"sortname":"my_date","sortorder":"asc","page":"1","rowNum":"30"} 
    }); 
} 

gridCompleteloadComplete。 と私はpostDataパラメータを直接jqGridに設定しようとしました。

.trigger("reloadGrid")でリロードせずに動作しませんでした。

ありがとうございました!

+0

問題を正しく理解しているかどうかはわかりません。サーバーが* 'filters'パラメータを解釈し、フィルタリングされていないデータを返す代わりに* filtered *データを返すという問題がありますか?そうでなければ、グリッドの作成中にpostData.filtersを直接設定し、 'loadonce:true、forceClientSorting:true'を使用するだけです。 Free jqGridは返されたデータをフィルタリングし、そこでソートして最終結果の最初のページを表示します。 'reloadGrid'は必要ありません。 – Oleg

+0

@Olegいいえ、私のサーバスクリプトはフィルタを解釈しません。私は作成時に 'postData'をどのように設定するのか分からないと思います。私は 'forceClientSorting'について知らなかった。 –

答えて

1

あなただけでグリッドの作成時にパラメータを使用できるように私には思える:

loadonce: true, 
forceClientSorting: true, 
search: true, 
postData: { 
    filters: { 
     groupOp: "AND", 
     rules: [ 
      {field: "customer", op: "cn", data: "difranco"} 
     ] 
    } 
} 

あなたはgridCompleteloadComplete.trigger("reloadGrid")で何のトリックを必要としません。 the demoまたはthis oneを参照してください。これは、jqGrid 4.13.1を解放するためにthe readmeに含まれています。デモではローカルデータを使用しますが、リモートデータでも同じことができます。ほとんど別の強力な機能:additionalPropertiessortfuncを使用し、loadonce: true, forceClientSorting: truepostData.filterssearch: trueを使用するカスタム並べ替えを使用したもう少し洗練されたデモherehereを参照してください。

は、を無視してjqGridを送信し、すべてのデータを返すすべてのパラメータを無視することが重要です。無料のjqGridは、postData.filtersに基づいてサーバーから返されたデータをフィルタリングし、結果をソートし、最終結果の最初のページをユーザーに表示します。ユーザは、ローカルページングを使用することができ、フィルタを変更することができます。サーバーへの追加要件はありません。

+0

ありがとう、オレゴン!まあ、これは "簡単な"部品のために働く - 私はちょうど 'フィルタ'を使用する場合、あなたのコードは私のために働く。たとえば、別のページを表示する場合、それは動作しません。この他の情報はどこに入れますか?私は少なくとも別のページを表示するオプションが必要です。 –

+0

@low_rents:「別のページを表示する」とはどういう意味ですか? – Oleg

+0

私はオブジェクト内にfree-jqgridの全体の "状態"を保存しようとしています。これには、あなたが現在いるページの数も含まれます。私の例で見ることができますが、これは '$("#grid ")を使用するとすべて正常に動作します。 ); ' –

関連する問題