jqgridで初期化時にデータをロード(サーバーにリクエスト)したくない場合の対応

画面初期表示時には表を表示するためのパラメータが決まっておらず、
ユーザーが条件を入力したときに初めてサーバーが問い合わせ結果を返せる
といった場合はjqgrid側では初期パラメータで初回時にリクエストしない等の
パラメータはなく(hiddengridがそれに近かったが、キャプションエリアを出すことが
できなかった&表のエリアだけは初回から表示したかった)、ちょっと工夫してあげないと
いけなかった。

どうやったかというと
グリッド初回読み込み時には
datatypeをlocal,
mtype,urlを宣言しない状態でグリッドオブジェクトを初期化してやり、
jsonデータが読み込める状態になって
明示的に検索ボタン等が押された時に、
datatypeをjson,mtypeをPOST,urlをjson返却URLに変えてやるというやり方。

コードはこんな感じ。

$(function(){
    // 初期化時にはdatatypeをlocal,mtype,urlを宣言しない。
    $("#list").jqGrid({ 
        datatype: 'local',     // 後でjsonに変更する
        // mtype: 'POST,       // 後で宣言する
        // url:   '/json.php', // 後で宣言する
        //  
        height: 125, 
        colNames:['Date', 'Client', 'Amount','Tax','Total','Notes'], 
        colModel:[ 
            {name:'invdate',index:'invdate', width:90}, 
            {name:'name',index:'name', width:100}, 
            {name:'amount',index:'amount', width:80, align:"right"}, 
            {name:'tax',index:'tax', width:80, align:"right"}, 
            {name:'total',index:'total', width:80,align:"right"},
            {name:'note',index:'note', width:150 }
        ], 
        pager: '#pager',
        rowNum:5,
        viewrecords: true
    });

    // button1ボタンが押されたときにdatatype,mtype,urlを変更、データをロードしなおす。
    $('#button1').click(function(){
        $('#list').setGridParam({page:"1",url: '/json.php',mtype: 'POST', datatype:'json'});
        $('#list').trigger("reloadGrid");
    });

});