2012-03-28 24 views
1

我正在使用jgGrid的treegrid,並且對這個插件來說是相當新的。我無法使treegrid功能正常工作。當我第一次點擊擴展按鈕時,它工作正常。下一次,當我點擊崩潰,它給了我javascript錯誤: $t.p.data[pos] is undefined這是在jqGrid的setTreeNode方法。jgGrid中的TreeGrid無法正常工作

我希望奧列格或有人會幫助或給我一個指針。

我的配置是如下:當該列被擴展是如下

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 
     } 
    ] 
} 
+0

錯誤'$ t.p.data [pos]'似乎更像您在網格中首次加載數據時遇到的問題。你可以在創建jqGrid時包含''agileProgramme/records.do''返回的數據。數據應該包含ID爲'475'的項目,它是您發佈的子節點的父項。 – Oleg 2012-03-28 15:46:51

+0

非常感謝Oleg的迴應。我粘貼了最初的數據。 – 2012-03-28 15:56:45

+0

Oleg,除了顯示的上述5個字段外,我在響應數據中還有更多額外的屬性。但是,在ColModel中,我現在僅限於上述5列。 – 2012-03-28 16:01:18

回答

2

我調試與您發佈,並找出其原因是the two lines of code,其中本地數據都在loadonce: true情況下刪除的數據網格。

如果是「標準」網格,TreeGrid在本地保存之前加載的數據,方法與loadonce: true相同。所以設置loadonce: true在TreeGrid的情況下是沒有意義的。此外,你現在如何知道在TreeGrid中設置loadonce: true有副作用。

所以要解決你的問題,你應該從TreeGrid定義中刪除loadonce: true

已更新:我剛剛發佈了the suggestion以消除您現在將來遇到的問題。

+0

非常感謝Oleg。你拯救了我的一天。真心感謝您的幫助。 – 2012-03-28 16:58:05

+0

偉大的工作奧列格。 – 2012-03-28 17:00:27

+0

@Nehu:不客氣! – Oleg 2012-03-28 17:32:27