3

私は初心者で、呼び出しをjqGrid介してサーブレットからデータを入力し、に表示しています。これで問題なく動作します。しかし、私の場合、日付を列名として表示しているため、列名は動的です。AjaxjqGrid

そのため、Dynamic colModelfor を検索すると、以下のコードが見つかりましたjqGRid

しかし、これにより2つのAjax呼び出しが発生します。動的列ヘッダーを使用したことのある人はいますか?

<script type="text/javascript"> 

    var grid = $("#rowsList");
    var url = '/getRowList?Id=9371&fromDate=2011-12-06&toDate=2012-12-06';
    jQuery().ready(function (){ 
        $.ajax({
            url: url,
            dataType: 'json',
            success: function(response) {
                prepareGrid(response);
            },
            error: function(request, textStatus, errorThrown) {
                alert(textStatus + " : " + request.responseText);
            }
        });
    });

    function prepareGrid(response){
        if (response) {
            if (!response.Error) {
                var colData = getColumnsData(response.columnData);
                colData = eval('{' + colData + '}');

                grid.jqGrid({ // This makes second server call
                    url: url,
                    datatype: 'json',
                    mtype: 'POST',
                    colModel: colData,
                    colNames: response.columnData,
                    height : 'auto',
                    pager: '#pager',
                    viewrecords: true,
                    loadtext: 'Loading',
                    sortorder: "asc",
                    gridview: true,
                    altRows: true,
                    cellEdit: false,
                    caption: 'Data List' 
                });
            }
        }
    }

    /**
     * Creates column data for jqgrid
     */
    function getColumnsData(Data) {
        // return column data array in jqGrid compatible format
        // This works fine
    }

</script> 

最初の呼び出しとセットで列名のみを返すという私の他の選択colModelsですが、単一のサーバー呼び出しで実行できるとよいでしょう。

4

1 に答える 1

2

Ajax 呼び出しの数を減らすことについて警告したいと思います。あなたが jqGrid の初心者である場合、jqGrid の使用法でいくつかの一般的なことを理解することが重要です。

  • jqGrid は、の呼び出し中に一度初期化する必要がありますgrid.jqGrid({...});
  • これはjqGrid によって複数回url使用されます。

グリッドには、ページャーでいくつかの一般的なユーザー インターフェイス要素があります (回答を参照してください) 。

ここに画像の説明を入力

ここに画像の説明を入力

これは、ユーザーが jqGrid と対話するために使用できます。したがって、ユーザーが「次のページ」ボタンをクリックすると、表示される行数を変更したり、並べ替え列 (または並べ替えの方向) を変更したりする新しい要求がサーバーに送信されurlます。検索ツールのようなユーザー インターフェイスの他の要素を使用することは非常に実用的です。

ここに画像の説明を入力

また、変更されたパラメーターを使用して新しいリクエストを生成urlします。サーバーの応答を受信した後、グリッド本体のみが置き換えられます。グリッドの他の部分は変更されません。メソッドを使用GridUnloadしてグリッド全体を再作成できます (こちらの例を参照)

したがって、グリッドのデータと一緒に毎回列定義を転送すると、不要なデータが送信され、パフォーマンスが低下する可能性があります。

于 2012-12-10T13:10:14.540 に答える