2011-01-09 26 views
1

を持つでは動作しません私はこのjqGridを持っている:列「meta.statusは」JSONドット表記と、サーバから送信されるに応じたデータであることをjqGridは、ソートや検索の列が、JSONのドット表記

$("#report").jqGrid({ 
     url:  '/py/db?coll=report', 
     datatype: 'json', 
     height:  250, 
     colNames: ['ACN', 'Status', 'Amount'], 
     colModel: [ {name:'acn', sortable:true}, 
         {name:'meta.status', sortable:true}, 
         {name:'amount'} ], 
     caption: 'Show Report', 
     rownumbers: true, 
     gridview: true, 
     rowNum: 10, 
     rowList: [10,20,30], 
     pager: '#report_pager', 
     viewrecords: true, 
     sortname: 'acn', 
     sortorder: "desc", 
     altRows: true, 
     loadonce: true, 
     mtype: "GET", 
     rowTotal: 1000, 
     jsonReader: { 
      root: "rows", 
      page: "page", 
      total: "total", 
      records: "records", 
      repeatitems: false, 
      id: "acn" 
      } 
    }); 

お知らせこのようなものです:

    ソートはここで、ドット表記を持つ列では動作しません
  • 「meta.stat:

    {"page": "1", "total": "1", "records": "5", "rows": [ 
         {"acn":1,"meta": {"status":"Confirmed"}, "amount": 50}, 
         {"acn":2,"meta": {"status":"Started"}, "amount": 51}, 
         {"acn":3,"meta": {"status":"Stopped"}, "amount": 52}, 
         {"acn":4,"meta": {"status":"Working"}, "amount": 53}, 
         {"acn":5,"meta": {"status":"Started"}, "amount": 54} ] } 
    

    問題が2倍です米国"。列ヘッダーにソート可能なアイコンも表示されず、ヘッダーがクリックされても何も起こりません。 loadonceがtrueでもfalseでもソートは機能しません。

  • もし、meta.status列(load notceをtrueに設定した後)を検索すると(ドット記法なしの他の列は大丈夫です)、次のようなjavascriptエラーがスローされます。 {name:amount}から{name:'amount'}に最後の列の定義を変更した後、私はあなたの問題を再現でき alt text
+0

引用しないで 'meta.status'を試しましたか? – ifaour

+0

私はcolModelでqutoesなしでmeta.statusを与えたい場合、Javascriptはmeta.statusが定義されていないというエラーをスローするので動作しません。 – rsmoorthy

答えて

3

:「ステータス」で並べ替え動作していないが、私はすべてのエラーメッセージを見ることができなかった(the demoを参照してください)。

一つは、それが1つの変更

{name:'status', sortable:true, jsonmap: "meta.status"} 

{name:'meta.status', sortable:true} 

から二番目の列の定義が固定デモhereを参照してください。問題を解決することができます。この問題を回避するための経験則として

+0

素晴らしい!どうもありがとう!これは問題を解決し、私はあまりにも幸せです!また、loadonce:trueを使用して検索(単純検索またはツールバー検索)などを行った場合にのみ、JSエラー(修正後には発生しない)が表示されました。注:「金額」を引用しないでバグのあるjsコードをお手数です。 – rsmoorthy

+0

@rsmoorthy:あなたを歓迎します!私はあなたを助けてうれしかった! ''メタ。http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_dot_notationたとえば、私はあなたがhttpでバグとして問題を投稿することをお勧めします://www.trirand.com/blog/?page_id = 393/bugs/forum。その後、jqGrid(Tony)の開発者は問題について知り、次のリリースでそれを修正する可能性があります。 – Oleg

+0

もちろん、バグが報告されます。また、 "jsonmap"は一方向にしか使用されません。 jqgridでjsonデータを抽出しますか? meta.statusフィールドのcelleditingを実行すると、jqGridは "meta.status"ではなく、 "status"としてのみフィールド/値をサーバーに送信します。つまり、サーバーにデータを送信中にjsonmapを参照していません。ドキュメントは、これがデータの取得中にのみ使用されることを示唆しているようです。どう思いますか?送信中も使用しないでください。 – rsmoorthy

1

  1. はあなたのnameindex値が同じ

    name: 'Date', index: 'Date', 
    name: 'Clicks', index: 'Clicks', 
    ... 
    
  2. はあなたが

    $("#jqGrid").setGridParam({datatype: 'local'}); 
    
    のようなものを設定することを確認していることを確認してください

    グリッドをリロードすると、リロードの「JSON」に、このトン、あなたがそれを使用している場合 - すなわち

    $("#yourGridID").setGridParam({datatype: 'json'}).trigger("reloadGrid"); 
    
  3. 最後に、あなたはあなたがそれを必要

    name: 'Date', index: 'Date', sortable:true 
    

    を使用することを確認してください。

関連する問題