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

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

 

运行效果图如下:

时间: 2024-09-19 02:59:45

[jillzhang]ExtJs与WCF交互:生成树 --数据库版补充的相关文章

ExtJs与WCF交互:生成树

上文做了下Ajax与WCF进行json交互的简单介绍,本文阐述一个具体的实际应用:ExtJs与WCF交互,生成树.也很简单.先看看最终的效果吧: 第一步: 创建一个.net framework 3.5的网站项目ExtJsTreeWcf 第二步: 在网站项目中创建一个启用了Ajax的WCF服务WcfTreeService.svc,创建好之后,对该服务做如下的更改: 1)在WcfTreeService.svc中增加Factory="System.ServiceModel.Activation.Web

ExtJs与WCF之间的跨域访问

在上一篇文章<<ExtJs+WCF+LINQ实现分页Grid>>中用ExtJs与Wcf交互实现了分页Grid,回复中心有灵犀同学希望能采用跨域访问的方式,这个问题其实也困扰了我很久,本来ExtJS用ScriptTagProxy支持跨域访问的,如果服务端是.aspx的页面文件,也非常好实现,但换作WCF,问题就复杂起来.本文尝试解决这个问题,方案不是很巧妙,但是我对多种方案实验中第一个且是唯一有效的办法. 首先看一下如何用ExtJs中的ScriptTagProxy跨域访问服务器.as

ExtJs学习笔记(20)-利用ExtJs的Ajax与服务端WCF交互

ExtJs是一套非常不错的javascript UI库(第一次接触ExtJs的,可到官方网站http://www.extjs.com/deploy/dev/examples/samples.html看下示例.相信不少人会心动的),不仅组件丰富,效果漂亮,而且ExtJs集成的Ajax功能可以方便的与.Net的WCF进行交互. 这里我们将演示ExtJs的FormPanel从WCF加载数据,以及如何提交数据到WCF服务端 1.首先来定义一个用于传输信息的Class(实际开发中,可以是Linq to S

第二节:ExtJS调用WCF系列-----分页排序列表实现

打开第一节中的那个项目,新建一个Paging.aspx的页面来实现分页列表. 这次我们使用一个测试的数据库CompanyInfoDB,里面有两张表,部门和员工,并外键关联,数据库调用采用Linq的Sqlmetal 命令方式,在Visual Studio 2008的命令提示符中输入以下命令:D:\Program Files\Microsoft Visual Studio 9.0\VC>sqlmetal /conn:server=172.16.1.52;database=CompanyInfoDB;

梅花树,数据库版的(c#)!

数据|数据库 asp.net带的TreeView有几个缺点: 1,有的浏览器不能够正确显示树,就是ie6有的也不能够正常显示 2,速度慢,老牛拉破车啊,慢的不得了 所以我就找了个js树,数据库版的,但那是asp的,没办法,把他改成aspx的吧!!! 梅花树的资料:开发文档: http://www.meizz.com/Web/Article.asp?id=436控件下载: http://www.meizz.com/Web/Download/MzTreeView10.rar应用示例: http://

ExtJS调用WCF系列

第三节:ExtJS调用WCF系列-----添加,修改,删除(2) 第三节:ExtJS调用WCF系列-----添加,修改,删除(1) 第二节:ExtJS调用WCF系列-----分页排序列表实现 第一节:ExtJS调用WCF系列-----实现JSON传递

Ajax与Wcf交互-JSON

在WCF的序列化中有DataContractJsonSerializer的格式化器,这就使得WCF相比传统的Xml Web Serice多了一种输入输出的编码格式:JSON.本文将介绍如何使用JSON实现Ajax与WCF之间的数据交互. JSON的全称是JavaScript Object Notation,是专门用于适应Ajax和Restful而出现的取代xml的编码格式.相比xml而言,它更适合javascript, 第一步: 在VS2008中创建一个.Net framework 3.5的网站

再说ExtJs与WCF之间的跨域访问

在前面文章ExtJs与WCF之间的跨域访问已经通过服务端代理的方式解决了 ExtJs与WCF跨域访问的问题,那个方案看起来并不怎么优雅,而当我在写过用 Restful方式调用WCF进行上传下载后,愕然发现原来WCF支持原生数据(Raw)的返 回,这就解决了ExtJs与Wcf之间进行跨域调用中的难题:返回数据必须满足 <script>格式.下面根据ExtJs与WCF之间的跨域访问中实现的项目,通过 Stream和ContentType的联合使用,返回原生数据给Extjs,从而实现跨域调用. 第一

extjs怎样将从oracle数据库获取到的数据进行分页显示?

问题描述 extjs怎样将从oracle数据库获取到的数据进行分页显示? extjs怎样将从oracle数据库获取到的数据进行分页显示? 解决方案 前台传回是第几页数据,后台查询结果返回OK 解决方案二: rownum between 1 and n 解决方案三: 是用jsp之类的东西读oracle数据库,然后生成extjs需要的json格式的数据返回给extjs加载,extjs无法直接加载oracle数据 http://blog.csdn.net/yizhiduxiu11/article/de