[jillzhang]ExtJs与WCF交互:生成树 --数据库版补充

简介: 原文见:http://www.cnblogs.com/jillzhang/archive/2008/06/15/1222233.html 已经讲得很清楚,本文只是将该篇WCF的方法换成数据库版 1.

原文见:
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;
}

即增加了一个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;
}

 


运行效果图如下:

目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
PHP与数据库交互的艺术:深入探讨PDO扩展
【8月更文挑战第28天】在数字信息时代的海洋里,PHP作为一艘灵活的帆船,承载着无数网站和应用的梦想。而PDO扩展,则是这艘帆船上不可或缺的导航仪,指引着数据安全与效率的航向。本文将带你领略PHP与数据库交互的艺术,深入浅出地探索PDO的世界,从连接数据库到执行复杂的查询,每一步都清晰可见。我们将一起航行在这段奇妙的旅程上,解锁数据的奥秘,体验编程的乐趣。
18 1
|
2月前
|
SQL 关系型数据库 MySQL
干货!python与MySQL数据库的交互实战
干货!python与MySQL数据库的交互实战
|
2月前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
41 0
|
2月前
|
API 数据库 开发者
【独家揭秘】Django ORM高手秘籍:如何玩转数据模型与数据库交互的艺术?
【8月更文挑战第31天】本文通过具体示例详细介绍了Django ORM的使用方法,包括数据模型设计与数据库操作的最佳实践。从创建应用和定义模型开始,逐步演示了查询、创建、更新和删除数据的全过程,并展示了关联查询与过滤的技巧,帮助开发者更高效地利用Django ORM构建和维护Web应用。通过这些基础概念和实践技巧,读者可以更好地掌握Django ORM,提升开发效率。
24 0
|
4月前
|
JSON 缓存 数据库
Django ORM的QuerySet:解锁数据库交互的魔法钥匙
Django ORM的QuerySet:解锁数据库交互的魔法钥匙
|
3月前
|
存储 监控 安全
安全规范问题之跟数据库交互涉及的敏感数据操作需要有哪些措施
安全规范问题之跟数据库交互涉及的敏感数据操作需要有哪些措施
|
4月前
|
Java 关系型数据库 数据库连接
【MyBatis】初步解析MyBatis:实现数据库交互与关系映射的全面指南
【MyBatis】初步解析MyBatis:实现数据库交互与关系映射的全面指南
84 1
|
3月前
|
存储 JSON JavaScript
数据库操作对象 db,用于与浏览器的 localStorage 交互
数据库操作对象 db,用于与浏览器的 localStorage 交互
31 0
|
4月前
|
存储 SQL PHP
PHP中的PDO与数据库交互
PHP的PDO扩展提供了一种方式来统一访问多种数据库
|
4月前
|
缓存 Java 数据库连接
构建高效数据库交互:Hibernate与JPA的性能优化策略
【6月更文挑战第25天】在大数据时代,优化Hibernate和JPA的数据库性能至关重要。本文探讨了优化策略:正确配置映射以减少冗余,利用JPQL/HQL提升查询效率,避免全字段选择,使用索引和分页,有效利用缓存策略,以及管理事务以平衡资源锁定。示例代码展示了分页查询的实现,以防止性能下降。
102 0