1

私はjqGridでtreegridを使用しており、このプラグインはまったく新しいものです。ツリーグリッド機能を正しく動作させることができません。初めて展開ボタンをクリックすると、正常に機能します。次回、クリックして折りたたむと、javascriptエラーが発生 します。$t.p.data[pos] is undefinedこれはjqGridのsetTreeNodeメソッドにあります。

オレグか誰かが私を助けてくれるか、私に指針を与えてくれることを願っています。

私の構成は次のとおりです。

var grid = $("#grid").jqGrid({
    treeGrid: true,
    treeGridModel: 'adjacency',
    ExpandColumn: 'businessAreaName',
    ExpandColClick : true,
    url:'agileProgramme/records.do',
    datatype: 'json',
    mtype: 'GET',
    colNames:['Id'
              , 'Business Area'
              , 'Investment'
              , 'Org'
              , 'Goal'
    ],
    colModel:[
/*00*/          {name:'agileProgrammeId',index:'agileProgrammeId', width:0, editable:false,hidden:true},
/*01*/          {name:'businessAreaName',index:'businessAreaName', width:160, editable:false},
/*02*/          {name:'programmeName',index:'programmeName', width:150, editable:false, classes:'link'},
/*03*/          {name:'org',index:'org', width:50, editable:false, classes:'orgHierarchy', sortable : false},
/*04*/          {name:'goal',index:'goal', width:70, editable:false}
    ],
    treeReader : {
        level_field: "level",
        parent_id_field: "parent", 
        leaf_field: "leaf",
        expanded_field: "expanded"
    },
    autowidth: true,
    height: 240,
    pager: '#pager',
    sortname: 'id',
    sortorder: "asc",
    toolbar:[true,"top"],
    caption:"TableGridDemo",
    emptyrecords: "Empty records",
    loadonce: true,
    jsonReader : {
        root: "rows",
        page: "page",
        total: "total",
        records: "records",
        repeatitems: false,
        cell: "cell",
        id: "agileProgrammeId"
    }
});

列を展開したときに返されるデータは次のとおりです。

{
   "page":"1",
   "total":"1",
   "records":"1",
   "rows":[
      {
         "agileProgrammeId":2,
         "businessAreaName":"child",
         "programmeName":"childSomething",
         "goal":null,
         "parent":1,
         "level":"1",
         "leaf":true,
         "expanded":false
      }
   ]
}

これが最初にロードされるデータです。

{
   "page":"1",
   "total":"1",
   "records":"1",
   "rows":[
      {
         "agileProgrammeId":1,
         "businessAreaName":"parent",
         "programmeName":"parentsomething",
         "goal":null,
         "parent":null,
         "level":"0",
         "leaf":false,
         "expanded":false
      }
   ]
}
4

1 に答える 1

2

投稿したデータを使用してグリッドをデバッグしたところ、理由は、の場合にローカルデータが削除される2行のコードloadonce: trueであることがわかりました。

loadonce: trueTreeGridは、「標準」グリッドの場合と同じ方法で、以前にロードされたデータをローカルに保存します。したがってloadonce: true、TreeGridの場合、の設定は意味がありません。さらにloadonce: true、TreeGridの場合の設定には副作用があります。

したがって、問題を解決するにloadonce: trueは、TreeGrid定義から削除する必要があります。

更新:私はちょうど今あなたが将来持っている問題を取り除くための提案を投稿しました。

于 2012-03-28T16:41:18.597 に答える