jqGridで表示されているデータをCSVとかにエクスポートする方法(JSON編)

概要

  • datatypeがjsonの場合です。
  • $('#grid').jqGrid('getGridParam', 'postData')が検索(searchGrid)や更新(reloadGrid)時にサーバー(url)へ送信されるデータです。

目的

jqGridでmultipleSearch:trueのときに、複雑な条件を設定して、並べ替えなんかもしちゃっているときの絞り込んだデータだけをエクスポートしたい。



方法

$(function ()
{
    /**
     * ./export.php
     *
     * export.phpはjqGridによる検索等のパラメータを受け入れ、
     * csvファイルを出力するものとする
     *
    ***/

    var opt = {};
    $('#list').jqGrid(opt);

    var $e = $(document.createElement('a'))
        .attr('href', '#')
        .text('エクスポート')
        .appendTo('body')
        .bind('click', function ()
        {
            var $t = $('#list');

            var pd = $t.jqGrid('getGridParam', 'postData');
            pd = $.param(pd);

            $(this).attr('href', 'export.php?' + pd);
        });

});

ちなみに

そもそもjqGridに渡すurlのパラメータに_export=csvが含まれる場合はCSV出力するようにしておいて、
postdataに入れてリロードしちゃうのはどうだろう。ってだめか。
javascriptからPOSTした返り値でダウンロードダイアログを出す方法を探さねば。

$('#list').jqGrid('setGridParam', {'postData': { '_export' : 'csv' }})
          .trigger('reloadGrid')
          .jqGrid('setGridParam', {'postData': { '_export' : null }});

最速の花粉症!?

寝て起きたらのどの上のほうがかぴかぴになっていて痛い。


花粉症だ!



と、思ったら風邪でした。なんという鼻かぜ。
皆様も急に寒くなったのでお気をつけあれ。