2016-10-25 3 views
0

私は無料のjqgridを使用しています。次のコードを単純な例として使用しています。データはグループ化せずに正しく出力されますが、グループ化すると行に表示されないデータ(placeid) rowObjectにはplaceidはありませんが、問題を解決するにはどうすればよいですか。 jsfiddleリンク:http://jsfiddle.net/johnnash03/6jhqgxw8/5/jqgridデータはグループ化中に未定義となる

 var rows = [{ 
       "place": "Kerala", 
       "placeid": "61", 
       "code": "kc10", 
     }] 

     var cols = ["place","code"]; 
     $("#grid").jqGrid({ 
      datatype: "local", 
      height: 250, 
      colNames: cols, 
      colModel: [{ 
       name: 'place', 
      }, { 
       name: 'code', 
       formatter: function(cellvalue, options, rowObject) { 
        return rowObject['placeid'] 
       } 
      }] 
     }); 

     for(var i=0;i<rows.length;i++) 
      $("#grid").jqGrid('addRowData',i+1,rows[i]); 

     // Data comes correct on commenting following line. 
     $("#grid").jqGrid('groupingGroupBy', 'place'); 

答えて

1

あなたのデモでの主な問題は、グリッドのすべての列にない財産placeid、の使用です。ループ内で呼び出されたaddRowDataメソッドを使用してグリッドをさらに塗りつぶします。それは私が知っているグリッドを埋めるための最も遅い方法です。あなたのケースで最も重要なことは、placecodeidのプロパティでのみ内部のdataが塗りつぶされることです。いいえplaceidプロパティはローカルに保存されます。したがって、後でグリッドを掘り下げている間、それを見ることはありません。

ローカルのdataに保存する必要があった入力項目の追加プロパティの名前を指定する使用法additionalPropertiesオプションで問題を解決できます。追加すると、問題が解決します。

1があまりにも、必要に応じて additionalProperties: ["placeid"]を追加することができます
var rows = [{ 
     "place": "Kerala", 
     "placeid": "61", 
     "code": "kc10", 
}]; 

$("#grid").jqGrid({ 
    data: rows, 
    colModel: [ 
     { name: "place" }, 
     { name: "code", 
      formatter: function (cellvalue, options) { 
       return options.rowData.placeid; 
      } 
     } 
    ], 
    grouping: true, 
    groupingView : { 
     groupField : ["place"] 
    }, 
    localReader: { id: "placeid" } 
}); 

:修正デモhttp://jsfiddle.net/OlegKi/6jhqgxw8/8/

を参照してください。私は、厳密には、次の程度にコードを変更することをお勧めいたします思います。 http://jsfiddle.net/OlegKi/6jhqgxw8/9/を参照してください。

上記のコードは、データを一度に作成、塗りつぶし、グループ化します。 placeidプロパティには、デフォルトのidプロパティの代わりに、rowid情報(行のidプロパティの値として使用される一意の値:<tr>要素)があることを通知するために、localReader: { id: "placeid" }が追加で使用されます。

関連する問題