<?xml version="1.0" encoding="GB2312" ?>
- <BOOKLIST>
- <BOOK id="1" name="Spring in Action" type="G" link="1.html">
- <CONTENTLIST>
- <CONTENT id="1" name="开始spring之旅" type="p" link="1.html">
<SEARCHKEY>spring</SEARCHKEY>
</CONTENT>
- <CONTENT id="2" name="Spring是什么" type="p" link="2.html">
<SEARCHKEY>spring</SEARCHKEY>
<SEARCHKEY>什么是spring</SEARCHKEY>
</CONTENT>
<CONTENT id="3" name="理解依赖注入" type="p" link="3.html" />
<CONTENT id="4" name="依赖注入" type="p" link="4.html" />
<CONTENT id="5" name="DI应用" type="p" link="5.html" />
</CONTENTLIST>
- <BMAPLIST>
<BMAP pid="1" seq="1">1</BMAP>
</BMAPLIST>
- <CMAPLIST>
<CMAP pid="3" seq="1">4</CMAP>
<CMAP pid="3" seq="2">5</CMAP>
</CMAPLIST>
</BOOK>
</BOOKLIST>
我用org.json里的方法
JSONArray json = JSONML.toJSONArray(this.getfilecontent());//this.getfilecontent()是获取之前的XML。
这样生成的JSON如下:
["BOOKLIST",
["BOOK",{"type":"G","link":"1.html","name":"Spring in Action","id":1},
["CONTENTLIST",
["CONTENT",{"type":"p","link":"1.html","name":"开始spring之旅","id":1},
["SEARCHKEY","spring"]],
["CONTENT",{"type":"p","link":"2.html","name":"Spring是什么","id":2},
["SEARCHKEY","spring"],
["SEARCHKEY","什么是spring"]],
["CONTENT",{"type":"p","link":"3.html","name":"理解依赖注入","id":3}],
["CONTENT",{"type":"p","link":"4.html","name":"依赖注入","id":4}],
["CONTENT",{"type":"p","link":"5.html","name":"DI应用","id":5}]],
["BMAPLIST",
["BMAP",{"seq":1,"pid":1},1]],
["CMAPLIST",
["CMAP",{"seq":1,"pid":3},4],
["CMAP",{"seq":2,"pid":3},5]]]]
是否正确,,,
现在的问题是要根据这个JSON文件,用ext生成一棵树该怎么做。。。。。。
树的样子如下:
+booknme
+content
+chilecontent
content全部都在<CONTENTLIST>里面,它们之前的父子关系由<cmaplist>里映射出来
现在就是要把JSON里读出来还要处理找出关系再生成一棵树,一点头绪都没有。。。。
本来还有ext.tree.treeloader来loader一个JSON生成树,可是那样JSON要完全符合树的格式,没有找到进行处理后的相关例子。。。
我该怎么办?????????????
9 个解决方案
#1
你生成的JSON的格式没问题
但你要清楚EXT.tree里的一些属性
下面的是我NET的代码
但你要清楚EXT.tree里的一些属性
下面的是我NET的代码
/// <summary>
/// 判断是否有子节点
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public bool HasChildNode(string id)
{
bool flag = true;
string sql = "select ID from M_Tree where isShow = 0 and PID = @id";
SqlParameter[] sqlParameter = {
new SqlParameter("@id",SqlDbType.NVarChar,20)
};
sqlParameter[0].Value = id;
int count = Convert.ToInt32(SqlHelper.ExecuteScalar(SqlHelper.Conn, CommandType.Text, sql, sqlParameter));
if (count > 0)
flag = false;
else
flag = true;
return flag;
}
/// <summary>
/// 获得menu的列表
/// </summary>
/// <returns></returns>
public List<TreeModel> GetMenuList()
{
List<TreeModel> list = new List<TreeModel>();
string sql = "select * from M_Tree where isShow = 0 and pid = " + HttpContext.Current.Request["node"] + "";
SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.Conn, CommandType.Text, sql);
while (reader.Read())
{
TreeModel model = new TreeModel();
model.id = reader["id"].ToString();
model.parentNodeId = Convert.ToString(HttpContext.Current.Request["node"]);
model.IsRoot = false;
model.leaf = HasChildNode(model.id);
model.draggable = true;
model.text = Convert.ToString(reader["treeCName"]);
model.TypeID = reader["id"].ToString();
model.PID = Convert.ToString(HttpContext.Current.Request["node"]);
model.TypeTitle = Convert.ToString(reader["treeCName"]);
model.TypeEName = Convert.ToString(reader["treeEName"]);
list.Add(model);
}
reader.Close();
return list;
}
//生成JSON
public string TreeStr(string type)
{
string str = "";
if(type=="tree")
str = JavaScriptConvert.SerializeObject(dal.GetMenuList());
return str;
}
#2
var url = "
Operate.aspx?opt=tree";
var loader = new Ext.tree.TreeLoader({
url:url,
requestMethod: 'GET',
listeners:{
"loadexception":function(loader,node,response){
//加载服务器数据,直到成功
node.loaded = false;
node.reload.defer(10,node);
}
}
});
//根节点
var root = new Ext.tree.AsyncTreeNode({
id:"0",
text:"系统管理",
leaf:false,
loader:loader,
expandable:true,
expanded:true //展开,默认不展开
});
//tree面板
var treePanel = new Ext.tree.TreePanel({
id:"tree",
root:root, //加载根节点
singleExpand:true,
autoHeight:true,
autoWidth:true,
frame:false,
lines:true,//节点之间连接的横竖线
animate:true //以动画形式伸展,收缩子节点
});
红色代码的页面就是调用1楼的代码
var loader = new Ext.tree.TreeLoader({
url:url,
requestMethod: 'GET',
listeners:{
"loadexception":function(loader,node,response){
//加载服务器数据,直到成功
node.loaded = false;
node.reload.defer(10,node);
}
}
});
//根节点
var root = new Ext.tree.AsyncTreeNode({
id:"0",
text:"系统管理",
leaf:false,
loader:loader,
expandable:true,
expanded:true //展开,默认不展开
});
//tree面板
var treePanel = new Ext.tree.TreePanel({
id:"tree",
root:root, //加载根节点
singleExpand:true,
autoHeight:true,
autoWidth:true,
frame:false,
lines:true,//节点之间连接的横竖线
animate:true //以动画形式伸展,收缩子节点
});
红色代码的页面就是调用1楼的代码
#3
是说在后台就把数据库里取出来的数据就转换成树格式的JSON,在页面上直接ext.tree.treeloader把JSON文件loader进来就可以了?
#4
我用的是JAVA,有没有JAVA相关的例子
#5
如何用JAVA从数据库里取出的数据构成一个能生成tree的JSON呢?
或从我上面的XML里构造出一个能生成tree的JSON?
我对这个才接触,不是很懂,可任务又在赶,,,
或从我上面的XML里构造出一个能生成tree的JSON?
我对这个才接触,不是很懂,可任务又在赶,,,
#6
对的
#7
http://lib.javaeye.com/blog/162359
你看看这里的吧
网上还有很多这样的文章,你可以自己搜搜
你看看这里的吧
网上还有很多这样的文章,你可以自己搜搜
#8
我想像你给的那个网http://lib.javaeye.com/blog/162359的样子去构造个JSON
最后生成的是一个Map 或List,
可是在我的org.json
里的josnArray 没有fromObject(object);方法可以把一个MAP或LIST转成JSON对象啊,那个fromObject是自己写的吗,如何写?
最后生成的是一个Map 或List,
可是在我的org.json
里的josnArray 没有fromObject(object);方法可以把一个MAP或LIST转成JSON对象啊,那个fromObject是自己写的吗,如何写?
#9
经过几天终于把这个问题解决了,使用了在后台根据查询出来的数据构造一个JSON传到页面去,根据ext.tree.treeloader来加载生成一棵动态树。。。
现在新的一个问题是,生成了JSON后,要在JSON里进行查询,这个怎么查啊。。。。。
现在新的一个问题是,生成了JSON后,要在JSON里进行查询,这个怎么查啊。。。。。
#1
你生成的JSON的格式没问题
但你要清楚EXT.tree里的一些属性
下面的是我NET的代码
但你要清楚EXT.tree里的一些属性
下面的是我NET的代码
/// <summary>
/// 判断是否有子节点
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public bool HasChildNode(string id)
{
bool flag = true;
string sql = "select ID from M_Tree where isShow = 0 and PID = @id";
SqlParameter[] sqlParameter = {
new SqlParameter("@id",SqlDbType.NVarChar,20)
};
sqlParameter[0].Value = id;
int count = Convert.ToInt32(SqlHelper.ExecuteScalar(SqlHelper.Conn, CommandType.Text, sql, sqlParameter));
if (count > 0)
flag = false;
else
flag = true;
return flag;
}
/// <summary>
/// 获得menu的列表
/// </summary>
/// <returns></returns>
public List<TreeModel> GetMenuList()
{
List<TreeModel> list = new List<TreeModel>();
string sql = "select * from M_Tree where isShow = 0 and pid = " + HttpContext.Current.Request["node"] + "";
SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.Conn, CommandType.Text, sql);
while (reader.Read())
{
TreeModel model = new TreeModel();
model.id = reader["id"].ToString();
model.parentNodeId = Convert.ToString(HttpContext.Current.Request["node"]);
model.IsRoot = false;
model.leaf = HasChildNode(model.id);
model.draggable = true;
model.text = Convert.ToString(reader["treeCName"]);
model.TypeID = reader["id"].ToString();
model.PID = Convert.ToString(HttpContext.Current.Request["node"]);
model.TypeTitle = Convert.ToString(reader["treeCName"]);
model.TypeEName = Convert.ToString(reader["treeEName"]);
list.Add(model);
}
reader.Close();
return list;
}
//生成JSON
public string TreeStr(string type)
{
string str = "";
if(type=="tree")
str = JavaScriptConvert.SerializeObject(dal.GetMenuList());
return str;
}
#2
var url = "
Operate.aspx?opt=tree";
var loader = new Ext.tree.TreeLoader({
url:url,
requestMethod: 'GET',
listeners:{
"loadexception":function(loader,node,response){
//加载服务器数据,直到成功
node.loaded = false;
node.reload.defer(10,node);
}
}
});
//根节点
var root = new Ext.tree.AsyncTreeNode({
id:"0",
text:"系统管理",
leaf:false,
loader:loader,
expandable:true,
expanded:true //展开,默认不展开
});
//tree面板
var treePanel = new Ext.tree.TreePanel({
id:"tree",
root:root, //加载根节点
singleExpand:true,
autoHeight:true,
autoWidth:true,
frame:false,
lines:true,//节点之间连接的横竖线
animate:true //以动画形式伸展,收缩子节点
});
红色代码的页面就是调用1楼的代码
var loader = new Ext.tree.TreeLoader({
url:url,
requestMethod: 'GET',
listeners:{
"loadexception":function(loader,node,response){
//加载服务器数据,直到成功
node.loaded = false;
node.reload.defer(10,node);
}
}
});
//根节点
var root = new Ext.tree.AsyncTreeNode({
id:"0",
text:"系统管理",
leaf:false,
loader:loader,
expandable:true,
expanded:true //展开,默认不展开
});
//tree面板
var treePanel = new Ext.tree.TreePanel({
id:"tree",
root:root, //加载根节点
singleExpand:true,
autoHeight:true,
autoWidth:true,
frame:false,
lines:true,//节点之间连接的横竖线
animate:true //以动画形式伸展,收缩子节点
});
红色代码的页面就是调用1楼的代码
#3
是说在后台就把数据库里取出来的数据就转换成树格式的JSON,在页面上直接ext.tree.treeloader把JSON文件loader进来就可以了?
#4
我用的是JAVA,有没有JAVA相关的例子
#5
如何用JAVA从数据库里取出的数据构成一个能生成tree的JSON呢?
或从我上面的XML里构造出一个能生成tree的JSON?
我对这个才接触,不是很懂,可任务又在赶,,,
或从我上面的XML里构造出一个能生成tree的JSON?
我对这个才接触,不是很懂,可任务又在赶,,,
#6
对的
#7
http://lib.javaeye.com/blog/162359
你看看这里的吧
网上还有很多这样的文章,你可以自己搜搜
你看看这里的吧
网上还有很多这样的文章,你可以自己搜搜
#8
我想像你给的那个网http://lib.javaeye.com/blog/162359的样子去构造个JSON
最后生成的是一个Map 或List,
可是在我的org.json
里的josnArray 没有fromObject(object);方法可以把一个MAP或LIST转成JSON对象啊,那个fromObject是自己写的吗,如何写?
最后生成的是一个Map 或List,
可是在我的org.json
里的josnArray 没有fromObject(object);方法可以把一个MAP或LIST转成JSON对象啊,那个fromObject是自己写的吗,如何写?
#9
经过几天终于把这个问题解决了,使用了在后台根据查询出来的数据构造一个JSON传到页面去,根据ext.tree.treeloader来加载生成一棵动态树。。。
现在新的一个问题是,生成了JSON后,要在JSON里进行查询,这个怎么查啊。。。。。
现在新的一个问题是,生成了JSON后,要在JSON里进行查询,这个怎么查啊。。。。。