[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 关系型数据库
PHP与数据库交互:从基础到进阶
【10月更文挑战第9天】在编程的世界里,数据是流动的血液,而数据库则是存储这些珍贵资源的心脏。PHP作为一门流行的服务器端脚本语言,其与数据库的交互能力至关重要。本文将带你从PHP与数据库的基本连接开始,逐步深入到复杂查询的编写和优化,以及如何使用PHP处理数据库结果。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技巧,让你在PHP和数据库交互的道路上更加从容不迫。
|
1月前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
4月前
|
开发者 UED Java
Play Framework惊天秘密:如何让异常处理优雅得像芭蕾舞?
【8月更文挑战第31天】在Web应用开发中,异常处理至关重要,直接影响应用稳定性和用户体验。Play Framework作为轻量级Java Web框架,提供了基于Scala偏函数的灵活异常处理机制。通过实现`HttpErrorHandler`接口可定义全局异常逻辑,而在控制器中使用try-catch块则能捕获特定异常。定义自定义异常类也有助于表示特定错误情况。最佳实践包括保持处理一致性、提供有用错误信息、记录日志及分类处理异常。掌握这些技巧,能使Play应用更健壮可靠。
68 1
|
4月前
|
SQL 关系型数据库 MySQL
干货!python与MySQL数据库的交互实战
干货!python与MySQL数据库的交互实战
|
4月前
|
SQL 关系型数据库 MySQL
PHP与数据库交互的艺术:深入探讨PDO扩展
【8月更文挑战第28天】在数字信息时代的海洋里,PHP作为一艘灵活的帆船,承载着无数网站和应用的梦想。而PDO扩展,则是这艘帆船上不可或缺的导航仪,指引着数据安全与效率的航向。本文将带你领略PHP与数据库交互的艺术,深入浅出地探索PDO的世界,从连接数据库到执行复杂的查询,每一步都清晰可见。我们将一起航行在这段奇妙的旅程上,解锁数据的奥秘,体验编程的乐趣。
71 1
|
4月前
|
数据库 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 应用中集成这两种技术,提高开发效率。
69 0
|
4月前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
54 0
|
4月前
|
SQL 数据库 开发者
全面提速你的数据访问:Entity Framework Core性能优化指南,从预加载到批量操作的最佳实践揭秘,打造高性能数据库交互体验
【8月更文挑战第31天】本文详细介绍如何在Entity Framework Core(EF Core)中优化数据访问性能,涵盖从创建项目到定义领域模型、配置数据库上下文的最佳实践。文章通过具体代码示例讲解了预加载、惰性加载、显式加载、投影及批量操作等技术的应用,并介绍了如何使用SQL查询和调整查询性能来进一步提升效率。通过合理运用这些技术,开发者可以构建出高效且响应迅速的数据访问层,提升应用程序的整体性能和用户体验。
74 0
|
4月前
|
API 数据库 开发者
【独家揭秘】Django ORM高手秘籍:如何玩转数据模型与数据库交互的艺术?
【8月更文挑战第31天】本文通过具体示例详细介绍了Django ORM的使用方法,包括数据模型设计与数据库操作的最佳实践。从创建应用和定义模型开始,逐步演示了查询、创建、更新和删除数据的全过程,并展示了关联查询与过滤的技巧,帮助开发者更高效地利用Django ORM构建和维护Web应用。通过这些基础概念和实践技巧,读者可以更好地掌握Django ORM,提升开发效率。
47 0
|
4月前
|
SQL API 数据库
揭秘Ruby数据库交互的黑科技!ActiveRecord模式:为何它让数据库操作如此“随心所欲”?
【8月更文挑战第31天】在Ruby编程中,与数据库交互至关重要。ActiveRecord作为Ruby on Rails框架的核心组件,凭借其简洁高效的特点,成为处理数据库操作的首选。本文深入探讨ActiveRecord模式,介绍其如何简化数据库交互,并通过示例代码展示具体应用。ActiveRecord是一种ORM框架,将数据库表映射为Ruby类,使开发者能通过操作对象间接管理数据库记录。其核心特性包括模型定义、关联管理、数据验证、事务处理及强大的查询接口。通过示例代码,展示了如何定义模型、创建记录、查询记录及处理关联,突显了ActiveRecord在简化数据库操作方面的优势。
91 0
下一篇
DataWorks