0

jqGrid に ajax 呼び出しから受け取ったデータを入力する必要があります。ここに私のjqGridコードがあります:

$("#discuss_table_answers").jqGrid({
        datatype: "local",
        jsonReader: {
            root: "list",
            repeatitems: false,
            records: "size"
        },
        colNames: ['agentId', 'date', 'deleted', 'id', 'questionId', 'rating', 'reported', 'text'],
        colModel: [
            {name: 'agentId', index: 'agentId', width: 80, align: 'right', formatter:"number"},
            {name: 'date', index: 'date', width: 80, align: 'right', formatter:"date"},
            {name: 'deleted', index: 'deleted', width: 150, sortable: true
                , formatter: function myformatter(cellvalue, options, rowObject) {
                if (cellvalue) {
                    return "<p>Rejected</p>";
                }
                return "<button class='reject_question' style='height: 20px;width: 100px'>Reject</button>";
            }
            },
            {name: 'id', index: 'id', width: 55,formatter:"number"},
            {name: 'questionId', index: 'questionId', width: 90,formatter:"number"},
            {name: 'rating', index: 'rating', width: 150, sortable: false,formatter:"number"},
            {name: 'reported', index: 'reported', width: 150, sortable: false},
            {name: 'text', index: 'text', width: 80, align: 'right'}
        ], height: "100%" });

データを追加するための関数コード:

function addData (rowId) {                
            var ansTable = $("#discuss_table_answers");
            ansTable.clearGridData(true);

            $.getJSON("review2-admin/question/" + rowId + "/answers", function (data) {
                console.log(data);
                console.log(data['list'].length);
                ansTable.setGridParam({data: data}).trigger('reloadGrid');
            });

firebug から、サーバーから適切な回答を得たことがわかります。

{"size":2,"list":[{"id":15,"questionId":9,"agentId":7327516,"text":"лоол","date":1364882946000,"reported":false,"deleted":false,"rating":0},{"id":12,"questionId":9,"agentId":4405127,"text":"456456456","date":1364793241000,"reported":false,"deleted":false,"rating":2}]}

問題は、サーバーから取得したデータがグリッドに表示されないことです。

次のようなテストデータを使用しようとしvar testData = [ {list: {agentId: "7327516", date: "1364882946000", deleted: false, id: "15", questionId: "9", rating: "0", reported: false, text: "лоол"}, size: 1} ]; ましたが、正常に機能し、テーブルが更新されました。

4

1 に答える 1

1

jqGrid で JSON 自体を処理し、パラメーターをリクエストの一部として送信するには、次のようにします。

jsonReader セクションを取り除く

次のパラメーターを jqGrid セットアップに追加します。

 datatype: 'json',
 mtype: 'POST', 
 url: '/Controller/ActionReturningJSONData'

データを検索するときに jqGrid が送信するパラメーターを変更したい場合はいつでも (ページ、リロードなどを介して)、次のように呼び出すことができます。

$('#gridName').jqGrid('setGridParam', { postData: { ValueName: Value }});

次に、コントローラーで「ValueName」パラメーターを評価して、提供しているデータセットを jqGrid に戻します。これは、jqGrid の外部で JSON を処理するよりもはるかに面倒ではありません。

于 2013-04-08T12:21:30.613 に答える