jqGrid中的TreeGrid无法正常工作

时间:2012-03-28 14:15:26

标签: jqgrid treegrid

我正在使用带有jqGrid的treegrid,对这个插件来说还是个新手。我无法使treegrid功能正常工作。我第一次单击展开按钮时工作正常。下次,当我点击崩溃时,它给了我javascript错误:      $t.p.data[pos] is undefined这是在jqGrid的setTreeNode方法中。

我希望Oleg或其他人会帮助或给我一个指针。

我的配置如下:

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

1 个答案:

答案 0 :(得分:2)

我使用您发布的数据调试了网格,并发现原因为the two lines of codeloadonce: true时删除了本地数据。

在“标准”网格的情况下,TreeGrid以与loadonce: true相同的方式在本地保存以前加载的数据。因此,对于TreeGrid,loadonce: true的设置没有任何意义。此外,您如何知道在TreeGrid的情况下设置loadonce: true会产生副作用。

因此,要解决您的问题,您只需从TreeGrid定义中删除loadonce: true

更新:我刚刚发布the suggestion以消除您现在遇到的问题。