我目前正在努力让一个treegrid 去哪里我覆盖数据函数来调用一个thrift 服务来填充数据。这个想法是我只加载父节点,然后当节点展开时,它将动态调用节俭服务来填充数据。当我尝试动态加载子项时,我遇到了一些与 treegrid 的行为方式有关的怪癖。它会很好地加载初始列表,但是当我去动态加载子时,它不会在父级展开时添加它。现在,如果您展开第二个条目,它会将子项添加到正确位置的列表中,但它不会将其视为 287 的子项。
我似乎无法理解我做错了什么,它不想作为一个孩子正确添加。
// The data that is returned via thrift to fill in the initial entry in the table
{
"total" : "13″,
"page":"1″,
"records": "720″,
"rows" : [
{"id" : "287","cell" : ["287","MDXX00025",true,0,null,false,false] }
,{"id" : "544″,"isLeaf":true,"cell" : ["544","MDXX00460",true,0,null,false,false] }]
}
// How jqGrid is configured with a oData object that contains the child I want to fill in.
var oData = { "rows" : [
{"id" : "7220","parent":287,"level":"1","isLeaf":true,"loaded":true,"empty":"MDXX00450" }]
};
function DoWork(postdata)
{
var sData = client.NavigateTable(postdata._search,postdata.page,postdata.rows,postdata.sidx,
postdata.sord,postdata.totalrows);
var obj = jQuery.parseJSON(sData);
var thegrid = jQuery("#addtree")[0];
thegrid.addJSONData(obj);
}
function DoTreeWork(postdata)
{
var thegrid = $("#addtree");
thegrid.jqGrid ('addChildNode', oData.rows[0].id, oData.rows[0].parent, oData.rows[0]);
}
jQuery(document).ready(function(){
$.jgrid.defaults = $.extend($.jgrid.defaults,{loadui:"enable"});
jQuery("#addtree").jqGrid({
datatype: function(postdata)
{
DoWork(postdata);
},
treedatatype: function (postdata)
{
DoTreeWork(postdata);
},
treeGrid: true,
treeGridModel: 'adjacency',
colNames:["id","empty","docno,"],
colModel:[
{name:'id',index:'id', width:20,key:true, editable:false},
{name:'empty',index:'empty',width:10},
{name:'docno',index:'docno', width:30, editable:true}
],
pager : "#paddtree",
treeGrid: true,
ExpandColumn : 'name',
editurl:'server.asp',
viewrecords: true,
autowidth: true,
height:'400',
rowNum:52,
rowTotal:100,
gridview: true,
sortorder: "asc",
sortname: 'id',
caption: "Grid"
});
jQuery("#addtree").jqGrid('navGrid',"#paddtree",{edit:true,add:false,del:true,search:false});
});
我还注意到传递给 addJSONData 的相同数据不适用于 addChildNode。我不确定这是设计使然还是疏忽。如果所有数据(父母和孩子)在开始时立即传递给 addJSONData,则整个示例运行良好。任何帮助,将不胜感激。