数据

 

 

<configuration>
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="show_sql">true</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="command_timeout">36000</property>
<property name="connection.connection_string">
Data Source=MINMIN\SQLEXPRESS;Initial Catalog=ZTREEDB;Integrated Security=True;
</property>
<mapping assembly="ZTree.Domain" />
</session-factory>
</hibernate-configuration>

 

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Eolande.ZTree.Domain" namespace="Eolande.ZTree.Domain">
<class name="ZTreeDomain" table="ZTree">
<id name="id" column="[Id]"></id>
<property name="pId" column="[PId]"/>
<property name="name" column="[Name]"/>
<property name="open" column="[Open]"/>
</class> </hibernate-mapping>
using System;
using System.Runtime.Serialization; namespace ZTree.Domain
{
[Serializable]
[DataContract]
public partial class ZTreeDomain
{
[DataMember]
public virtual int id { get; set; }
[DataMember]
public virtual int pId { get; set; }
[DataMember]
public virtual string name { get; set; }
[DataMember]
public virtual bool open { get; set; } public virtual TreeModel CopyToTreeModel()
{
return new TreeModel() { id = this.id, text = this.name, expanded = this.open };
} }
}

 

using System;
using System.Collections.Generic;
using System.Runtime.Serialization; namespace Eolande.ZTree.Domain
{
[Serializable]
[DataContract]
public class TreeModel
{
public TreeModel()
{
children = new List<TreeModel>();
}
[DataMember]
public virtual int id { get; set; }
[DataMember]
public virtual string text { get; set; }
[DataMember]
public virtual bool expanded { get; set; }
[DataMember]
public virtual bool leaf { get; set; }
[DataMember]
public virtual List<TreeModel> children { get; set; }
}
}

 

 

using Eolande.ZTree.Domain;
using NHibernate.Cfg;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http; namespace ZTree.Web.Controllers
{
public class ZTreeController : ApiController
{ public TreeModel Get()
{
var nhConfig = new Configuration().Configure();
var sessionFactory = nhConfig.BuildSessionFactory();
TreeModel root = null; using (var session = sessionFactory.OpenSession())
{
var list = session.QueryOver<ZTreeDomain>().List().ToList();
var r = list.FirstOrDefault(x => x.pId == -1);
root = new TreeModel() { text = "." }; if (r != null)
{
var p = r.CopyToTreeModel();
root.children.Add(p);
var childs = list.Where(x => x.pId == p.id);
foreach (var c in childs)
{
var m = c.CopyToTreeModel();
root.children.Add(m);
ChildNode(m, list);
}
}
return root;
} } private void ChildNode(TreeModel root, List<ZTreeDomain> list)
{
var childs = list.Where(x => x.pId == root.id);
foreach (var c in childs)
{
var n = c.CopyToTreeModel();
root.children.Add(n);
ChildNode(n, list.Where(x => x.pId == c.id).ToList());
}
}
}
}

 

 

Ext.onReady(function () {

    var store = Ext.create('Ext.data.TreeStore', {
root: {
expanded: true
},
proxy: {
type: 'ajax',
url: 'api/ZTree/Get'
}
});
var treePanel = Ext.create('Ext.tree.Panel', {
id: 'tree-panel',
title: 'Sample Layouts',
region: 'north',
split: true,
height: 360,
minSize: 150,
rootVisible: false,
autoScroll: true,
store: store,
listeners: {
itemclick: function (thisTree, record, item, index, e, options) {
console.log(item);
if (record.get('leaf')) {
Ext.MessageBox.alert('YES', record.get('text'));
}
}
}
}); var contentPanel = {
id: 'content-panel',
region: 'center', // this is what makes this panel into a region within the containing layout
layout: 'card',
margins: '2 5 5 0',
activeItem: 0,
border: true,
html: '<p>content panel</p>'
};
var detailsPanel = {
id: 'details-panel',
title: 'Details',
region: 'center',
bodyStyle: 'padding-bottom:15px;background:#eee;',
autoScroll: true,
html: '<p class="details-info">When you select a layout from the tree, additional details will display here.</p>'
}; Ext.create('Ext.Viewport', {
layout: 'border',
title: 'Ext Layout Browser',
items: [{
layout: 'border',
id: 'layout-browser',
region: 'west',
border: false,
split: true,
margins: '2 0 5 5',
width: 290,
minSize: 100,
maxSize: 500,
items: [treePanel, detailsPanel]
},
contentPanel
],
renderTo: Ext.getBody()
}); });

ext js layout and tree的更多相关文章

  1. Ext JS treegrid 发生的在tree上增加itemclick 与在其它列上增加actioncolumn 发生事件冲突(event conflict)的解决办法

    Ext JS treegrid 发生的在tree上增加itemclick 与在其它列上增加actioncolumn 发生事件冲突(event conflict)的解决办法 最近在适用Ext JS4开发 ...

  2. [Ext JS 4] 实战之Grid, Tree Gird 添加按钮列

    引言 贴一个grid 的例子先: 有这样一个需求: 1. 给 Grid(or Tree Grid)添加一列, 这一列显示是Button. 点击之后可以对这一行进行一些操作 2. 这一列每一行对应的按钮 ...

  3. [Ext JS 4] 实战之Grid, Tree Gird编辑Cell

    前言 本篇这里以稍微复杂一点的Tree Grid 来介绍. 在写编辑grid 之, 先来看一下 grid 的 selType 的配置. 先给一个简单的Tree grid 的例子: Ext.onRead ...

  4. EXT JS 4.3 在线学习

    官网地址:http://docs.sencha.com/extjs/4.1.3/ 相关示例:http://docs.sencha.com/extjs/4.1.3/#!/example Examples ...

  5. Ext Js详解指南

    什么是Ext JS 走进Ext的世界 Ext JS是一款富客户端开发框架它基于javascript.HTML和CSS开发而成,无需安装任何插件即可在常用浏览器中创建出绚丽的页面效果. 个人总结Ext ...

  6. Ext JS 6学习文档–第1章–ExtJS入门指南

    Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少.google 搜索资料时找到了一本国外牛人写的关于 ExtJS ...

  7. 推荐一本不错的书《Sencha Ext JS 5 Bootcamp in a Book》

    原文:https://www.createspace.com/5425618 看了一下该书目录,感觉不错,Ext JS 5的重点内容都提及了,确实是一本学习Ext JS 5的好书,唯一遗憾的地方就是太 ...

  8. Ext.js高级组件

    第二章:Ext.js高级组件 grid组件 普通方式 表格面板类Ext.grid.Panel xtype(别名):gridpanel.grid title标题.renderTo渲染至.width宽.h ...

  9. Ext JS 6学习文档-第6章-高级组件

    Ext JS 6学习文档-第6章-高级组件 高级组件 本章涵盖了高级组件,比如 tree 和 data view.它将为读者呈现一个示例项目为 图片浏览器,它使用 tree 和 data view 组 ...

随机推荐

  1. Sass、Ruby、Nodejs、gulp

    1.Sass文件就是普通的文本文件,不过其文件后缀名有两种,一种为“.sass”:另一种为“.scss”.我们一般用“.scss”就好,至于这两种文件扩展名的区别在于“.sass”是Sass语言文件的 ...

  2. 微信小程序登录流程图

    一. 官方登录时序图 官方的登录时序图 二. 简单理解 这里仅按照官方推荐的规范来 0. 前置条件 一共有三端: - 微信小程序客户端 - 第三方服务器端- 微信服务器端 1. 客户端获得code,并 ...

  3. django unresolved template

    参考:https://stackoverflow.com/questions/8487410/pycharm-django-1-3-static-url-in-templates-unresolved ...

  4. python3 time、random、hashlib模块

    一.时间模块时间的几种形式:时间戳,结构化时间,字符串时间 import time print(time.time()) # 仅仅是当前时间的时间戳 float print(time.localtim ...

  5. Makefile 的 prequisite 執行順序 single multi thread

    Makefile 代碼如下: B 需要 A 的 產出, all: A B A B 是 target, case 1: single-thread make -j1 則執行的順序為 A -> B ...

  6. html怎样让表格里面的内容居中

    html怎样让表格里面的内容居中 text-align:center; 在表格td中,有两个属性控制居中显示 align——表示左右居中——left,center,right valign——控制上下 ...

  7. HTML-坦克大战-完成子弹连发功能(三)

    如题,完成子弹连发功能,上一篇博客遗留的问题,不能够连发,且一直按J键则第一颗子弹会消失:那是因为定义的子弹变量只是一个变量,现在定义成一个数组:在之前的代码上修改如下: <!DOCTYPE h ...

  8. 【C语言】++(a++)的写法是错的

    http://bbs.csdn.net/topics/390764053 a++得到的是一个右值,++操作需要的是一个左值. ------------------------------------- ...

  9. 第六篇:远程过程调用(RPC)

    Remote procedure call (RPC) 客户端接口 有关RPC的说明 回调队列 消息属性 关联的ID ( Correlation Id ) 整合 在第二篇教程中,我们学习了如何使用工作 ...

  10. MATLAB作图方法与技巧(三)

    1.利用指令plot绘制圆的参数方程x = sin(t),y = cos(t),(0<=t<=2*pi)的曲线图. 代码如下 t = linspace(0,2*pi,100); x = s ...