我是Extjs的新手,我想将数据动态加载到树中。服务器返回数据,这不是json格式,即数据结构几乎搞砸了。我应该在代码中指定什么URL以及如何处理数据格式。在查看服务器返回的数据时,无法区分父级和子级。我正在尝试根据以下代码构建一个树...
Ext.onReady(function() {
var Tree = Ext.tree;
var tree = new Tree.TreePanel({
useArrows: true,
autoScroll: true,
animate: true,
enableDD: true,
containerScroll: true,
border: false,
// auto create TreeLoader
dataUrl:'????????????????????',
root: {
nodeType: 'async',
text: 'ALL',
draggable: false,
id: ''
}
});
// render the tree
tree.render('tree-div');
tree.getRootNode().expand();
});
答案 0 :(得分:1)
传递dataUrl配置选项时,您告诉Tree Component使用默认的TreeLoader,它只接受JS数组(JSON)作为服务器的输出。如果您从服务器传递其他数据,无论是XML,YAML还是其他像您所说的mumbojumbo,您将必须编写自己的TreeLoader。
首先查看Ext.tree.Treeloader或source of TreeLoader上的文档,这可能会让您了解编写自己的Loader以接受服务器输出所需要做的事情。
答案 1 :(得分:0)
直接将json对象添加到树中.....
Java代码:
for (Object object : objJSONArray) {
i++;
JSONObject jsobject = (JSONObject) object;
if (i == 1) {
treedata = jsobject;
System.out.println(" rootnode is:::" + treedata);
} else {
String nodeparent = jsobject.getString("NODE_PARENT");
String parentId = treedata.get("ID").toString();
if (nodeparent.equals(parentId)) {
treedata.put("children", jsobject);
System.out.println("treedata " + treedata);
} else {
Set jsonKeys = treedata.keySet();
Iterator itr = jsonKeys.iterator();
while (itr.hasNext()) {
String keys = itr.next().toString();
Object keyObject = treedata.get(keys);
if (keyObject instanceof JSONObject) {
JSONObject jso = treedata.getJSONObject(keys);
String childParentID = jso.getString("ID");
if (childParentID.equals(nodeparent)) {
jso.put("children", jsobject);
treedata.put(keys, jso);
}
}
}
}
}
}