0

以下は私のjqGridの初期化です:

            jQuery("#dataGrid").jqGrid({
            jsonReader : {
              root:"rows",
              page: "page",
              total: "total",
              records: "records",
              cell: "",
              id: "0" 
           },
           postData: {
           page: function() { return page; }
           },
            url: 'WebService.asmx/GetData',
            datatype: "json",
            mtype: "POST",
            ajaxGridOptions: {
               contentType: "application/json; charset=utf-8"
            },
            serializeGridData: function (data) {
                return JSON.stringify(data);
            },
            colNames: [<%= colName %>],
            colModel: [<%= colModal %>],
            rowNum: 10,
            rowList: [10, 20, 30],
           pager: '#dataGrid_Pager',
            sortname: 'name',
            viewrecords: true,
            sortorder: "name",
            caption: "JSON Example"
        });

グリッドにデータを表示しても問題ありません。ただし、私の Web サービスでは、postData は空です。つまり、context.request.form(0) は空です。

これをコードから削除すると:

ajaxGridOptions: {
               contentType: "application/json; charset=utf-8"
            },

context.request.form(0) にウォッチを追加すると、postData には次のものが含まれます。

{"page":1,"_search":false,"nd":1394031676148,"rows":10,"sidx":"name","sord":"name"}

しかし今、グリッドは空で、グリッド データはありません。

postData が ajaxGridOptions と競合しているようですか?

誰でもアドバイスできますか?両方が一緒に働く必要があります。

ありがとう!

4

1 に答える 1

0

私の問題を解決しました。新参者でごめんなさい。

コンテンツが json に設定されると、投稿データはありません。JSON 応答は、実際には context.request.inputStream にあります。

次の方法でデータをオブジェクトに変換することで、データを取り戻すことができます。

Dim jss As New JavaScriptSerializer
    Context.Request.InputStream.Position = 0
    Dim sr As New StreamReader(Context.Request.InputStream)
    Dim jsonString As String = sr.ReadToEnd()
    Dim jsObj As Object = jss.DeserializeObject(jsonString)

jsObj("page")、jsObj("_search") などを実行することで、投稿されたデータを取得できます...

これが誰かに役立つことを願っています。

ありがとう。

于 2014-03-10T10:21:01.507 に答える