博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ext.Net学习笔记22:Ext.Net Tree 用法详解
阅读量:6926 次
发布时间:2019-06-27

本文共 4012 字,大约阅读时间需要 13 分钟。

image

上面的图片是一个简单的树,使用来创建这样的树结构非常简单,代码如下:

这是一个使用标记来创建的树,我们还可以使用服务器端代码来创建,代码如下:

private void createTree(){    TreePanel tree = new TreePanel();    tree.Root.Add(new Node() { Text = "根节点", Expanded = true });    tree.Root[0].Children.Add(new Node() { Text = "节点1", Expanded = true });    tree.Root[0].Children[0].Children.Add(new Node() { Text = "节点11", Leaf = true });    tree.Root[0].Children[0].Children.Add(new Node() { Text = "节点12", Leaf = true });    tree.Root[0].Children.Add(new Node() { Text = "节点2", Leaf = true });    tree.Root[0].Children.Add(new Node() { Text = "节点3", Leaf = true });    tree.Root[0].Children.Add(new Node() { Text = "节点4", Leaf = true });    winTreeContainer.Add(tree);}

异步加载树节点

在上面的代码中,我们都是一次性加载了所有节点,虽然在开发过程中比较方便,但与异步加载来说更加的耗资源,尤其是当树节点比较多的时候。

接下来让我们来构建一个异步加载的树。

在树的定义中南,我们为根节点添加了NodeID,然后为Tree添加了TreeStore,TreeStore通过ajax代理获取数据,获取数据的url为tree-handler.ashx处理程序,我们的处理程序代码为:

public void ProcessRequest(HttpContext context){    //得到node id    string nodeId = context.Request["node"];        //根据node id 进行处理    NodeCollection nodes = new NodeCollection();    nodes.Add(new Node() { Text = "节点1" });    nodes.Add(new Node() { Text = "节点2" });    nodes.Add(new Node() { Text = "节点3" });    nodes.Add(new Node() { Text = "节点4" });    string responseString = nodes.ToJson();    context.Response.Write(responseString);    context.Response.End();}

在处理方法中,最主要的是第一句,从请求中得到node id,拿到node id之后,我们可以根据node id进行子节点的获取操作,我们的代码中是为了进行演示,所以并没有获取相应子节点的操作。

如果是在MVC中,我们可以使用StoreResult来作为Action的数据返回类型。

树节点的自定义属性

通常情况下,树节点所包含的的信息并不是我们完整的数据,我们需要添加一些自定义的属性,Ext.Net为我们提供这种功能:

第一步,我们需要在TreeStore中添加一个Model,这个Model中的字段就是我们自定义的属性。

第二步,在生成节点的时候为我们自定义属性赋值。

public void ProcessRequest(HttpContext context){    //得到node id    string nodeId = context.Request["node"];    //根据node id 进行处理    NodeCollection nodes = new NodeCollection();    var node = new Node() { Text = "节点1" };    node.CustomAttributes.Add(new ConfigItem("CreateUser", "qeefee"));    nodes.Add(node);    string responseString = nodes.ToJson();    context.Response.Write(responseString);    context.Response.End();}

第三步,在前台代码中使用自定义属性

我们在树的底部添加一个panel,用来显示自定义的星系,然后添加一个事件,在节点选中的时候来更新panel的显示

创建人:{CreateUser}

事件的处理方法如下:

var MyApp = {    showDetail: function (record) {        var panel = this.getDockedItems("panel[dock=bottom]")[0];        panel.update(record.data);    }};

在跟踪事件处理过程中,我们可以看到自定义属性的值:

image

它是和树节点的其他属性一起保存的,所以我们在使用record的时候,还可以方便的使用树节点的其他属性。

这个示例的效果图如下:

image

多列树(TreeGrid)

TreeGrid的效果如下图:

image

类似于GridPanel,有标题、多列的样式等。

又不同于GridPanel,因为它可以像树一样显示一个展开、折叠图标。

我们来看一下这个例子的代码:

TreePanel的Store与之前例子相同,Root的配置也与之前的例子相同,唯一不同的是TreePanel中多了一个ColumnModel节点,这里面的配置和GridPanel的ColumnModel相同,TreeColumn列用来显示树的列,用起来很方便。

本文由原创首发,转载请注明出处。点击访问更多

原文链接:

本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/p/3568377.html,如需转载请自行联系原作者

你可能感兴趣的文章
C++应用程序性能优化(五)——操作系统的内存管理
查看>>
嵌入式 Linux C语言(十)——静态库函数和动态库函数
查看>>
LVS之VS/DR搭建web集群实战!!!
查看>>
Java基础学习总结(20)——基础语法
查看>>
大型网站技术架构(四)网站的高性能架构
查看>>
jquery 刮奖插件
查看>>
es6--export default
查看>>
Java JNI 调用C++ API及中文编码问题
查看>>
Springmvc的开发流程--附带实例
查看>>
Java23中设计模式(Design Patterns)详解
查看>>
Java基础学习总结(3)——抽象类
查看>>
win7还未用熟 已经win10系统的身影了
查看>>
c#中的internal关键字
查看>>
Redis未授权访问之反弹shell
查看>>
C#中使用split分割字符串的几种方法
查看>>
使用Nginx如何配置Tomcat访问日志记录真实IP
查看>>
我的友情链接
查看>>
利用Zabbix的自动注册功能添加局域网中的服务器进行监控
查看>>
Bugly接入指南
查看>>
我的友情链接
查看>>