ztree异步加载,子节点数据无法显示
ztree吧
全部回复
仅看楼主
level 1
我用的是一般处理程序,页面第一次加载成功了。可是第二加载,数据取了出来,却无法显示。
代码:
string id = context.Request["id"];//界面传下的参数
if (id == null)
{//查询root,第一次加载》》已成功显示
string simpleTreeNodes = "[";
DataTable dt = BLLSyss.CreateInstance().GetStructRoot();
//获取跟节点
foreach (DataRow dr in dt.Rows)
{
stru.Parent = dr["id"].ToString();
string retparent;
DataTable childrendt = BLLSyss.CreateInstance().GetStruct_ByParentid(stru);
if (childrendt.Rows.Count > 0)
retparent = "true";
else
retparent = "false";
string node = string.Format("{{ \"id\":{0}, \"pid\":{1}, \"name\":\"{2}\",\"isParent\":{3}}}", dr["id"].ToString(), dr["parentid"].ToString(), dr["name"].ToString(), retparent);
simpleTreeNodes += node + ",";
}
int leg = simpleTreeNodes.Length;
simpleTreeNodes = simpleTreeNodes.Substring(0, leg - 1) + "]";
context.Response.Write(simpleTreeNodes);
}
else
{//获取子节点数据
stru.Parent = id;
DataTable strdt = BLLSyss.CreateInstance().GetStruct_ByParentid(stru);
string simpleTreeNodes = "[";
foreach (DataRow dr in strdt.Rows)
{
stru.Parent = dr["id"].ToString();
string retparent;
DataTable childrendt = BLLSyss.CreateInstance().GetStruct_ByParentid(stru);//获取dr["id"].ToString()是否存在子节点
if (childrendt.Rows.Count > 0)//存在
retparent = "true";
else//不存在时
retparent = "false";
string node = string.Format("{{ \"id\":{0}, \"pid\":{1}, \"name\":\"{2}\",\"isParent\":{3}}}", dr["id"].ToString(), id, dr["name"].ToString(), retparent);
//跟踪调试,发现错误出现在:node后面的“dr["id"].ToString()”???我也不知道具体怎么回事,但下面的数据却能成功取出。格式也正确。郁闷
simpleTreeNodes += node + ",";
}
int leg = simpleTreeNodes.Length;
simpleTreeNodes = simpleTreeNodes.Substring(0, leg - 1) + "]";//数据成功取出
context.Response.Write(simpleTreeNodes);
2012年04月28日 02点04分 1
level 1
补充前台:
var setting = {
view: {
selectedMulti: false
},
isSimpleData: true,
treeNodeKey: "id", //设置节点唯一标识属性名称
treeNodeParentKey: "pid", //设置节点的父节点唯一标识属性名称
nameCol: "name", //设置 zTree 显示节点名称的属性名称,此处默认为Name
showLine: true,
root: { //zTree数据节点的根,全部节点数据都处于 root.nodes 内
isRoot: true,
nodes: []
},
async: {
enable: true,
url: "Hander/Sys_UEdit.ashx",
autoParam: ["id"],
otherParam: { "type": "Async" },
dataFilter: filter
},
callback: {
beforeClick: beforeClick,
beforeAsync: beforeAsync,
onAsyncError: onAsyncError,
onAsyncSuccess: onAsyncSuccess,
asyncSuccess: zTreeOnAsyncSuccess
}
};
function filter(treeId, parentNode, childNodes) {
if (!childNodes) return null;
for (var i = 0, l = childNodes.length; i < l; i++) {
childNodes[i].name = childNodes[i].name.toString();
}
return childNodes;
}
function beforeClick(treeId, treeNode) {
//用户刷新
if (!treeNode.isParent) {
$("#udt").empty();
$.post("Hander/Sys_UEdit.ashx", { "type": "ztree", "deptid": treeNode.id }, function (data, status) {
//users表,部门编号
if (status != "success") {
alert("页面请求失败!");
return;
}
if (data == "NO") {
// alert("该用户不存在");
return;
}
var comments = $.parseJSON(data); //取出数据
var trtitle = $("<tr><td style='width:15%;text-align:center'>操作</td><td style='width:70px; text-align:center;'>工号</td><td style='width:130px; text-align:center;'>姓名</td></tr>");
$("#udt").append(trtitle);
for (var i = 0; i < comments.length; i++) {
var tr = $("<tr><td style='text-align:center'><input id='uchk" + i + "' name='uchk' uname='" + comments[i].Name + "' uid='" + comments[i].Id + "' type='checkbox' /></td><td style='width:70px;text-align:center;'>" + comments[i].Id + "</td><td style='width:130px;text-align:center;'>" + comments[i].Name + "</td></tr>");
$("#udt").append(tr);
}
});
return false;
} else {

2012年04月28日 02点04分 2
level 11
1、后台问题完全无法帮你解决,请自行查找错误根源
2、前台问题请利用 chrome 的调试工具自行调试检查一遍,检查 异步加载得到的数据是否正常,检查 js 是否有报错? 跟踪异步加载的代码进行到哪儿出错,导致的无法加载?
2012年04月28日 07点04分 4
1