ext js layout and tree
数据
<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的更多相关文章
- Ext JS treegrid 发生的在tree上增加itemclick 与在其它列上增加actioncolumn 发生事件冲突(event conflict)的解决办法
Ext JS treegrid 发生的在tree上增加itemclick 与在其它列上增加actioncolumn 发生事件冲突(event conflict)的解决办法 最近在适用Ext JS4开发 ...
- [Ext JS 4] 实战之Grid, Tree Gird 添加按钮列
引言 贴一个grid 的例子先: 有这样一个需求: 1. 给 Grid(or Tree Grid)添加一列, 这一列显示是Button. 点击之后可以对这一行进行一些操作 2. 这一列每一行对应的按钮 ...
- [Ext JS 4] 实战之Grid, Tree Gird编辑Cell
前言 本篇这里以稍微复杂一点的Tree Grid 来介绍. 在写编辑grid 之, 先来看一下 grid 的 selType 的配置. 先给一个简单的Tree grid 的例子: Ext.onRead ...
- EXT JS 4.3 在线学习
官网地址:http://docs.sencha.com/extjs/4.1.3/ 相关示例:http://docs.sencha.com/extjs/4.1.3/#!/example Examples ...
- Ext Js详解指南
什么是Ext JS 走进Ext的世界 Ext JS是一款富客户端开发框架它基于javascript.HTML和CSS开发而成,无需安装任何插件即可在常用浏览器中创建出绚丽的页面效果. 个人总结Ext ...
- Ext JS 6学习文档–第1章–ExtJS入门指南
Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少.google 搜索资料时找到了一本国外牛人写的关于 ExtJS ...
- 推荐一本不错的书《Sencha Ext JS 5 Bootcamp in a Book》
原文:https://www.createspace.com/5425618 看了一下该书目录,感觉不错,Ext JS 5的重点内容都提及了,确实是一本学习Ext JS 5的好书,唯一遗憾的地方就是太 ...
- Ext.js高级组件
第二章:Ext.js高级组件 grid组件 普通方式 表格面板类Ext.grid.Panel xtype(别名):gridpanel.grid title标题.renderTo渲染至.width宽.h ...
- Ext JS 6学习文档-第6章-高级组件
Ext JS 6学习文档-第6章-高级组件 高级组件 本章涵盖了高级组件,比如 tree 和 data view.它将为读者呈现一个示例项目为 图片浏览器,它使用 tree 和 data view 组 ...
随机推荐
- 【BZOJ2527】【POI2011】Meteors [整体二分]
Meteors Time Limit: 60 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 这个星球经常会下陨石雨.BI ...
- [Leetcode Week9]Minimum Path Sum
Minimum Path Sum 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/minimum-path-sum/description/ Descr ...
- php7安装及和php5的共存
http://blog.csdn.net/liuxinmingcode/article/details/50319145 http://www.jb51.net/article/109228.htm ...
- 【C++】重载
参考:黄邦勇帅 1.操作符重载函数作为类的成员和友元或者独立于类的区别: 当操作符重载函数作为类的成员函数时,操作符重载函数的参数会比作为友元或者独立于类的操作符重载函数少一个参数,因为操作符重载类成 ...
- Plain Old Data (POD)
Plain Old Data (POD) POD指的是这样一些数据类型:基本数据类型.指针.union.数组.构造函数是 trivial 的 struct 或者 class. POD用来表明C++中与 ...
- yum,httpd,php环境搭建方法
#删除已有的yum 1 rpm -qa|grep yum|xargs rpm -e --nodeps 2 ls 3 rpm -ivh python-iniparse-0.3.1-2.1.el6. ...
- dict的setdefault(学习bottle源代码)
在bottle的源代码中,看到如下一段话: sys.modules.setdefault('bottle', sys.modules['__main__']) 这段话,实际上就是dict类型的setd ...
- Redis-4.0.8 readme.md
This README is just a fast *quick start* document. You can find more detailed documentation at [redi ...
- Linux下如何批量转码iconv
来源:http://hi.baidu.com/curioz/blog/item/2555863514f9491d90ef390d.html 下载了不少文本txt,如verycd上的致纯书苑,解压看看是 ...
- Bootstrap模态框垂直居中展示的方法
在bootstrap.js中加入以下代码: