web-dev-qa-db-ja.com

jqGrid:「reloadGrid」を呼び出して外部フィルターからグリッドを更新する方法

JqGridの外部に、グリッドのリロードをトリガーするフィルターがあります。このエントリは、postDataオプションを使用して実装する方法についての良い洞察を与えてくれました: 組み込みの検索/フィルターボックスを使用せずにjqGridデータをフィルターする方法 残念ながら、コードスニペットはフラグメントであり、私はできません呼び出しの全体的なシーケンスがどうあるべきかを理解します。これが私の現在のアプローチの要約です:

<script>
  $(document).ready(function() {
    $("#submit").click(function(e) {
      e.preventDefault();
      myGrid.trigger('reloadGrid');
    }); 
  });

var url="${servicesUrl}/projects";

var myGrid = $("#projectList").jqGrid({
    url: url,
    datatype: 'json',
    mtype: 'GET',  
    // ...
});
</script>

[送信]ボタンをクリックするたびにグリッドの再読み込みがトリガーされるように、コードをどのように構成する必要がありますか?それを整理したら、posData部分を追加できると確信しています。私の問題は、ほとんどの場合、呼び出しの全体的なシーケンスにあります。どの呼び出しをready()関数内に含めるべきか、そして「reloadGrid」を適切に呼び出す方法がわかりません。どんな助けでも大歓迎です。

7
Pablo

これが私にとってうまくいったことです。各リクエストが行われる前にbeforeRequestプロパティを更新するpostDataイベントにコールバックを設定しました。

すべてのjqGridinitコードを$(document).ready(function(){});関数内に配置する必要があることに注意してください。そうしないと、テーブル要素がまだDOMにない可能性があります。

var url="${servicesUrl}/projects";

$(document).ready(function() {
    var $table = $("#projectList");

    $table.jqGrid({
        url: url,
        datatype: 'json',
        mtype: 'GET',  

        beforeRequest: function() {
            var postData = $table.getGridParam('postData');
            //add parameters to postData here
        }
        // ...
    });

    $("#submit").click(function(e) {
        e.preventDefault();
        $table.trigger('reloadGrid');
    }); 
});
6
cfs