level 5
ztree f[a.nameCol] 未定义????
2012年02月20日 07点02分
1
level 11
如果你没有修改 setting.data.key.name 属性的话,请务必给 节点数据提供 name 属性,以保证节点能够正常显示名称。
2012年02月20日 07点02分
2
level 11
这要看你的代码是如何实现的了。。。如果你用的是异步加载,并且后台始终输出这些数据,那肯定会这样的。
2012年02月20日 09点02分
4
level 5
是用的异步加载 但是输出的 既有子节点的 也有父节点的数据 ???
2012年02月20日 09点02分
5
level 11
zTree 完全支持输出的数据及有父节点也有子节点的情况。 但如果初始化时指定某个节点的isParent =true,并且又没有子节点,那么展开此父节点时,zTree 会自动异步加载其子节点的。
2012年02月20日 09点02分
7
level 11
1、利用 onClick 回调配上 reAsyncChildNodes 方法完全可以实现你的需求,
2、我看你的代码就是应该就是利用 onClick 然后使用了自己编写的ajax获取json数据,然后利用 addNodes 方法添加进去,这样挺正常的呀。
如果你的问题是为何有重复数据,那么关键是你后台是如何生成 这个 json 数据的。 zTree 本身并不进行数据判重的处理,这完全取决于你的需求。
2012年02月20日 12点02分
10
level 5
json 输出是正常滴 没有错误
setting 设置:
var setting = {
showLine: true,
checkable: true,
async: true, // 需要异步加载zTree
asyndType: "get",
asyncUrl: "group.jsp", // 异步加载时访问的页面
asyncParam: ["id","name"], // 异步加载时要传递的参数
isParent: true,
isSimpleData: true, // 简单数据模型,必须提供下面的两项
treeNodeKey: "id", // 节点的id
treeNodeParentKey: "pId", // 父节点的id
nameCol:"name",
callback: {
//加载完成
//asyncSuccess: zTreeOnAsyncSuccess,
// 单击鼠标时
//click: zTreeOnClick,
//展开节点
expand: zTreeOnExpand
}
};
2012年02月20日 13点02分
12
level 11
朋友,你给我看你后台这些没有用呀,我刚才说的是,你后台如何生成数据是你自己的需求和规则来决定。。。我现在不明白你给我看这个,到底要问什么了。 你这两段代码没有任何关联,也没有任何逻辑。。。。我完全无从下手。
2012年02月20日 13点02分
13
level 5
我想问的是 加载会 重复
我第一次是从group.jsp 中获取父节点信息
第二次是通过展开节点 从 mobile.jsp 获取子节点信息
现在 但我展开父节点是 可以alert 出子节点信息 但是 同时也加载了父节点信息
...
2012年02月21日 00点02分
14
level 11
请你打开 chrome,然后按下 F12,用 开发人员调试工具,看 网络 network,然后你监控异步加载的地址,是否正确。
我看你设置 异步加载地址的url 是 group.jsp, 不知道你是什么时候把它更换为 mobile.jsp 的呢?
有两种遍历的办法用于快速更换url:
1、 url 属性是可以配置为 function 的,你可以根据节点来自定义异步加载其子节点的url;
2、你可以利用 beforeAsync 这个 回调,在这里面修改 url 属性内容。
2012年02月21日 01点02分
15
level 5
首先页面异步加载是group.jsp 的数据
当我点击展开时异步加载mobile.jsp 的数据
2012年02月21日 01点02分
16
level 11
这是你的需求,你要把这个需求表现在你的代码上呀,朋友。
2012年02月21日 02点02分
17
level 5
我是这样写的啊 但是就是把group.jsp执行了两次
我硬是木有找出是哪执行了第二次 group.jsp
<!-- data pro start -->
<script type="text/javascript">
var zTreeObj;
var treeNode;
var newNodes;
var setting = {
showLine: true,
checkable: true,
async: true, // 需要异步加载zTree
asyndType: "get",
asyncUrl: "group.jsp", // 异步加载时访问的页面
asyncParam: ["id","name"], // 异步加载时要传递的参数
//url: "group.jsp",
//type: "get",
//param: ["id","name"],
isParent: true,
isSimpleData: true, // 简单数据模型,必须提供下面的两项
treeNodeKey: "id", // 节点的id
treeNodeParentKey: "pId", // 父节点的id
nameCol: "name",
callback: {
//加载完成
//asyncSuccess: zTreeOnAsyncSuccess,
// 单击鼠标时
click: zTreeOnClick,
//展开节点
expand: zTreeOnExpand
}
};
//页面加载执行开始
$(document).ready(function(){
zTreeObj = $("#tree").zTree(setting, null);
//获取选中的节点值
$("#btSelected").click(function(){
var treeNode = zTreeObj.getCheckedNodes(true);
if(treeNode.length > 0){
var selectedNodes = "";
selectedNodes += "[";
for(var i=0;i<treeNode.length;i++) {
//alert(treeNode[i]["id"]);
alert(treeNode[i]["name"]);
}
selectedNodes += "]";
}
});
});
//异步加载完执行
function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
zTreeObj.expandAll(false);
}
//鼠标单击执行
function zTreeOnClick(event,treeId, treeNode) {
//getChildNodeData(treeNode.id, treeNode);
}
//树形展开执行
function zTreeOnExpand(event, treeId, treeNode){
getChildNodeData(treeNode.id,treeNode);
}
//获取子节点数据
function getChildNodeData(group_id,treeNode){
alert(group_id + "------" + treeNode);
$.ajax({
type: "get",
url: "mobile.jsp?groupId=" + group_id,
dataType: "text",
error: function(){
alert("加载数据出错...");
},
success: function(jsonStr){
//alert(jsonStr);
newNodes = [{name:"newNode1"}, {name:"newNode2"}, {name:"newNode3"}];
zTreeObj.addNodes(treeNode, newNodes);
//zTreeObj_1.reAsyncChildNodes(treeNode, "refresh");
}
});
}
</script>
2012年02月21日 02点02分
18
level 11
呵呵,朋友,你的代码有些混乱了。。。逻辑上出现了问题。
1、看你的代码原来你用的还是 v2.x 系列的版本;用 v2.x 版本的时候请记住如果修改 setting 请使用 getSetting() 方法获取配置,并且 使用 updateSetting 方法更新配置。(如果是 v3.x 修改起来就方便多了)
2、你对 zTree 的异步加载还不太了解,我前面的答复中说过:“如果初始化时指定某个节点的isParent = true,并且又没有子节点,那么展开此父节点时,zTree 会自动异步加载其子节点的。 ” 但你又自己定义了再 onClick 的时候自己用 ajax 从mobile.jsp 中异步加载数据,可是这样并不能阻止此父节点展开时继续从 group.jsp 中获取数据的操作。
建议你不要使用自己的ajax加载节点了,设置 asyncUrl 为 function,每次父节点展开时,你可以根据父节点的情况,来决定用哪个 url 加载子节点。很方便更换的了。
2012年02月21日 03点02分
19