[jillzhang]ExtJs与WCF交互:生成树 --数据库版补充
来源:互联网 发布:愚人节搞怪软件下载 编辑:程序博客网 时间:2024/06/03 19:46
原文见:
http://www.cnblogs.com/jillzhang/archive/2008/06/15/1222233.html
已经讲得很清楚,本文只是将该篇WCF的方法换成数据库版
1.分类表T_Class主要结构
F_ID 主键ID
F_ClassName 分类名称
F_ParentID 父类ID
2.扩展treeNode类
[DataContract]
public class treenode
{
[DataMember]
public string id;
[DataMember]
public string text;
[DataMember]
public List<treenode> children = new List<treenode>();
[DataMember]
public string cls;
[DataMember]
public bool leaf;
[DataMember]
public string parentid;
}
public class treenode
{
[DataMember]
public string id;
[DataMember]
public string text;
[DataMember]
public List<treenode> children = new List<treenode>();
[DataMember]
public string cls;
[DataMember]
public bool leaf;
[DataMember]
public string parentid;
}
即增加了一个parentid成员
3.修改WCF中的方法
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
public treenode[] GetTree()
{
using (DBDataContext db = new DBDataContext())
{
if (db.Connection != null && db.Connection.State != System.Data.ConnectionState.Open)
{
db.Connection.Open();
}
var query = db.T_Classes.Select(c => new { id = c.F_ID, name = c.F_ClassName, parentid = c.F_ParentID });
foreach (var u in query)
{
treenode _node = new treenode();
_node.id = u.id.ToString().ToLower();
_node.parentid = u.parentid.ToString().ToLower();
_node.text = u.name;
int i = db.T_Classes.Count(c => c.F_ParentID == u.id);
if (i > 0)
{
_node.leaf = false;
_node.cls = "folder";
}
else
{
_node.leaf = true;
_node.cls = "file";
}
GenTreeNode(NodeLists, _node);
}
db.Connection.Close();
}
return NodeLists.ToArray();
}
public List<treenode> NodeLists = new List<treenode>();
public List<treenode> GenTreeNode(List<treenode> nodeList, treenode node)
{
bool flag = false;
foreach (treenode n in nodeList)
{
if (n.id == node.parentid)
{
n.children.Add(node);
flag = true;
break;
}
}
if (!flag)
{
nodeList.Add(node);
}
return nodeList;
}
[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
public treenode[] GetTree()
{
using (DBDataContext db = new DBDataContext())
{
if (db.Connection != null && db.Connection.State != System.Data.ConnectionState.Open)
{
db.Connection.Open();
}
var query = db.T_Classes.Select(c => new { id = c.F_ID, name = c.F_ClassName, parentid = c.F_ParentID });
foreach (var u in query)
{
treenode _node = new treenode();
_node.id = u.id.ToString().ToLower();
_node.parentid = u.parentid.ToString().ToLower();
_node.text = u.name;
int i = db.T_Classes.Count(c => c.F_ParentID == u.id);
if (i > 0)
{
_node.leaf = false;
_node.cls = "folder";
}
else
{
_node.leaf = true;
_node.cls = "file";
}
GenTreeNode(NodeLists, _node);
}
db.Connection.Close();
}
return NodeLists.ToArray();
}
public List<treenode> NodeLists = new List<treenode>();
public List<treenode> GenTreeNode(List<treenode> nodeList, treenode node)
{
bool flag = false;
foreach (treenode n in nodeList)
{
if (n.id == node.parentid)
{
n.children.Add(node);
flag = true;
break;
}
}
if (!flag)
{
nodeList.Add(node);
}
return nodeList;
}
运行效果图如下:
- [jillzhang]ExtJs与WCF交互:生成树 --数据库版补充
- ExtJs与WCF交互:生成树
- Java与WCF交互(一)补充:用WSImport生成WSDL的Java客户端代码
- Java与WCF交互(一)补充:用WSImport生成WSDL的Java客户端代码
- Extjs如何与数据库交互(一)
- Extjs如何与数据库交互(三)
- Extjs如何与数据库交互(四)
- ExtJs学习笔记(20)-利用ExtJs的Ajax与服务端利用WCF交互
- extjs与后台交互
- Extjs与servlet交互
- ExtJs连接数据库及动态与.net交互
- 自动生成与数据库交互代码
- Ajax与WCF交互-WCF之美
- Ajax与WCF交互-WCF之美
- Ajax与WCF交互-WCF之美
- Ajax与WCF交互-WCF之美
- extjs与php参数交互
- ExtJs 与后台交互实例
- Linux 进程间通信:共享内存
- 一个比较通用的ajax,以作准确修改
- 古埃及文明
- 更换Winform界面的皮肤
- CSDN Test blog
- [jillzhang]ExtJs与WCF交互:生成树 --数据库版补充
- fso 使用说明
- ASP.NET跨页面传值技巧
- 《Windows CE实用开发技术》电子档
- javascript函数小集锦
- cvs2
- 螺旋队列
- javascript一些常用介绍
- event 使用