0

jqgrid に json データを表示する必要があるという問題があります。取得するデータは次の形式です。

{"data":{"data":"\tat org.aaa.aaa.aaa.aaa.aaa.aaa(aaa.java:512)[147:org.aaa.aaa.aaa:9.1.1]\n\tat aaa.aaa.aaa.aaa.aaa.aaa(aaa.java:1789)[146:org.aaa:9.1.1]\n"}}

データを表示するための私のJavaScriptは次のとおりです。

 $("#grid").jqGrid({
  url: '/getdata',
      datatype: "json",
  mtype: "GET",
  colNames:['data'],
  colModel:[
     {name:'data', index:'data', align:'center'}
  ],
   jsonReader : {
          repeatitems: false,
      id: "0",
      cell: "",
       root: "logs",
      page: function() { return 1; },
      total: function() { return 1; },
      records: function(obj) { return obj.length; }
    },
   loadonce: true,      
   viewrecords: true,
   autowidth: true,
   multiselect: false,
   ignoreCase: true,
   sortable: true,
   height: 600, 
   rowNum: 999
 });

いくつかの組み合わせを試しましたが、このコードでは jqgrid に表示されるデータを取得できませんでした。jqgrid は空のテーブルを表示します。ここで何かが足りないと思います。

また、「\n」を押すたびに新しい行に表示されるように、データをフォーマットする必要があります。列のフォーマッタで「addrowdata」を使用してそれを行うことができると思います。そうですか?

どんなポインタでも大歓迎です。

ありがとう、

アシャ

4

1 に答える 1

0

の使用はお勧めしませんaddRowDatabeforeProcessingサーバーから返されたデータを jqGrid が読み取れる形式に変更するために使用するとより効果的です。たとえば、data.dataパーツを分割して\n、対応するアイテムの配列を埋めることができます。

autoencode: true,
beforeProcessing: function (data) {
    var items = data.data.data.split("\n"), i, l, item;
    data.logs = [];
    for (i = 0, l = items.length; i < l; i++) {
        item = $.trim(items[i]);
        if (item.length > 0) {
            data.logs.push([item]);
        }
    }
}

上記のコードにjQuery.trimの呼び出しを含めて、各行\tの先頭または末尾にある不要な空白文字やその他の空白文字を削除しました。

autoencode: trueHTML の特殊文字 ( 、 など) を含むテキストがグリッド内に正しく表示されるようにするために、厳密に推奨されるオプションを<追加し>ました。&

さらにjsonReader、たとえば次のように変更する必要があります

jsonReader: {
    root: "logs",
    cell: "",
    id: function () {
        return function () {
            return $.jgrid.randId();
        }
    },
    page: function() { return 1; },
    total: function() { return 1; },
    records: function(obj) { return obj.logs.length; }
}

の値はid扱いにくいように見えますが、実装idにより、すべての行の属性に対して本当に一意の値が生成されます。

対応するデモはこちらにあります。

于 2012-12-07T16:04:28.157 に答える