- 浏览: 707436 次
- 来自: ...
文章分类
最新评论
-
ranguisheng:
可以加点注释,代码不便于阅读.
用java实现数据库连接池的一个简单示例 -
abcd880129:
这样写的话,还要用专门的下载工具,不然,只能下到一个为空的ex ...
ZK下载文件时,不在服务器生成文件直接下载 -
234369425:
同上,是20
java计算阶乘 -
CodeToMyLaw:
如果目录中含有中文呢?
[^\x00-\xff] 中文的 ...
js验证文件目录格式的正确性 -
yanzhoupuzhang:
加了,还是报那个错误!
org.apache.commons.dbcp.BasicDataSource的解决方法
本节为ExtJS表格学习的最后一节,学完我将学习表单与输入控件的内容。
树形表格(TreeGrid)同时具备树形的分级结构和表格的丰富内容。
先引入扩展组件,老规矩:
接下来创建TreeGrid
在列定义中有xtype: 'treecolumn',这是告诉列要以树形列来显示,在以后的表单或其他容器中也会以这样的方式来显示,有panelcolumn等,这里等以后讲到再说。
再看下JSON数据格式,后台只要符合这种形式,EXTJS就会给你自动解析出来:
这里还有一个扩展功能,如下:
表头点击箭头就会出现过滤组件,便于筛选数据,每列都有,是不是很丰富啊。
下面看代码:
树形表格(TreeGrid)同时具备树形的分级结构和表格的丰富内容。
先引入扩展组件,老规矩:
//引入扩展组件 Ext.Loader.setConfig({enabled: true}); Ext.Loader.setPath('Ext.ux', '../ExtJS4.2/ux/'); Ext.require([ 'Ext.data.*', 'Ext.grid.*', 'Ext.tree.*', 'Ext.ux.CheckColumn' ]);
接下来创建TreeGrid
Ext.onReady(function(){ Ext.QuickTips.init(); //we want to setup a model and store instead of using dataUrl Ext.define('Task', { extend: 'Ext.data.Model', fields: [ {name: 'task', type: 'string'}, {name: 'user', type: 'string'}, {name: 'duration', type: 'string'} ] }); var store = Ext.create('Ext.data.TreeStore', { model: 'Task', proxy: { type: 'ajax', //the store will get the content from the .json file url: 'treegrid-data.json' }, folderSort: true }); //Ext.ux.tree.TreeGrid在UX扩展中也有,但不常用,您可以简单地使用一个tree.TreePanel var tree = Ext.create('Ext.tree.Panel', { title: 'Core Team Projects', width: 500, height: 300, renderTo: 'treegrid', collapsible: true, useArrows: true, rootVisible: false, store: store, multiSelect: true, singleExpand: true, //the 'columns' property is now 'headers' columns: [{ xtype: 'treecolumn', //this is so we know which column will show the tree text: 'Task', flex: 2, sortable: true, dataIndex: 'task' },{ //we must use the templateheader component so we can use a custom tpl xtype: 'templatecolumn', text: 'Duration', flex: 1, sortable: true, dataIndex: 'duration', align: 'center', //add in the custom tpl for the rows tpl: Ext.create('Ext.XTemplate', '{duration:this.formatHours}', { formatHours: function(v) { if (v < 1) { return Math.round(v * 60) + ' mins'; } else if (Math.floor(v) !== v) { var min = v - Math.floor(v); return Math.floor(v) + 'h ' + Math.round(min * 60) + 'm'; } else { return v + ' hour' + (v === 1 ? '' : 's'); } } }) },{ text: 'Assigned To', flex: 1, dataIndex: 'user', sortable: true }, { xtype: 'checkcolumn', header: 'Done', dataIndex: 'done', width: 40, stopSelection: false }, { text: 'Edit', width: 40, menuDisabled: true, xtype: 'actioncolumn', tooltip: 'Edit task', align: 'center', icon: '../MyDemo/images/edit.png', handler: function(grid, rowIndex, colIndex, actionItem, event, record, row) { Ext.Msg.alert('Editing' + (record.get('done') ? ' completed task' : '') , record.get('task')); } }] }); });
在列定义中有xtype: 'treecolumn',这是告诉列要以树形列来显示,在以后的表单或其他容器中也会以这样的方式来显示,有panelcolumn等,这里等以后讲到再说。
再看下JSON数据格式,后台只要符合这种形式,EXTJS就会给你自动解析出来:
{"text":".","children": [ { task:'Project: Shopping', duration:13.25, user:'Tommy Maintz', iconCls:'task-folder', expanded: true, children:[{ task:'Housewares', duration:1.25, user:'Tommy Maintz', iconCls:'task-folder', children:[{ task:'Kitchen supplies', duration:0.25, user:'Tommy Maintz', leaf:true, iconCls:'task' },{ task:'Groceries', duration:.4, user:'Tommy Maintz', leaf:true, iconCls:'task', done: true },{ task:'Cleaning supplies', duration:.4, user:'Tommy Maintz', leaf:true, iconCls:'task' },{ task: 'Office supplies', duration: .2, user: 'Tommy Maintz', leaf: true, iconCls: 'task' }] }, { task:'Remodeling', duration:12, user:'Tommy Maintz', iconCls:'task-folder', expanded: true, children:[{ task:'Retile kitchen', duration:6.5, user:'Tommy Maintz', leaf:true, iconCls:'task' },{ task:'Paint bedroom', duration: 2.75, user:'Tommy Maintz', iconCls:'task-folder', children: [{ task: 'Ceiling', duration: 1.25, user: 'Tommy Maintz', iconCls: 'task', leaf: true }, { task: 'Walls', duration: 1.5, user: 'Tommy Maintz', iconCls: 'task', leaf: true }] },{ task:'Decorate living room', duration:2.75, user:'Tommy Maintz', leaf:true, iconCls:'task', done: true },{ task: 'Fix lights', duration: .75, user: 'Tommy Maintz', leaf: true, iconCls: 'task', done: true }, { task: 'Reattach screen door', duration: 2, user: 'Tommy Maintz', leaf: true, iconCls: 'task' }] }] },{ task:'Project: Testing', duration:2, user:'Core Team', iconCls:'task-folder', children:[{ task: 'Mac OSX', duration: 0.75, user: 'Tommy Maintz', iconCls: 'task-folder', children: [{ task: 'FireFox', duration: 0.25, user: 'Tommy Maintz', iconCls: 'task', leaf: true }, { task: 'Safari', duration: 0.25, user: 'Tommy Maintz', iconCls: 'task', leaf: true }, { task: 'Chrome', duration: 0.25, user: 'Tommy Maintz', iconCls: 'task', leaf: true }] },{ task: 'Windows', duration: 3.75, user: 'Darrell Meyer', iconCls: 'task-folder', children: [{ task: 'FireFox', duration: 0.25, user: 'Darrell Meyer', iconCls: 'task', leaf: true }, { task: 'Safari', duration: 0.25, user: 'Darrell Meyer', iconCls: 'task', leaf: true }, { task: 'Chrome', duration: 0.25, user: 'Darrell Meyer', iconCls: 'task', leaf: true },{ task: 'Internet Exploder', duration: 3, user: 'Darrell Meyer', iconCls: 'task', leaf: true }] },{ task: 'Linux', duration: 0.5, user: 'Aaron Conran', iconCls: 'task-folder', children: [{ task: 'FireFox', duration: 0.25, user: 'Aaron Conran', iconCls: 'task', leaf: true }, { task: 'Chrome', duration: 0.25, user: 'Aaron Conran', iconCls: 'task', leaf: true }] }] } ]}
这里还有一个扩展功能,如下:
表头点击箭头就会出现过滤组件,便于筛选数据,每列都有,是不是很丰富啊。
下面看代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Hello Extjs4.2</title> <link href="../ExtJS4.2/resources/css/ext-all.css" rel="stylesheet"> <script src="../ExtJS4.2/ext-all.js"></script> <script src="../ExtJS4.2/locale/ext-lang-zh_CN.js"></script> <script type="text/javascript"> //引入扩展组件 Ext.Loader.setConfig({enabled: true}); Ext.Loader.setPath('Ext.ux', '../ExtJS4.2/ux/'); Ext.require([ 'Ext.grid.*', 'Ext.data.*', 'Ext.ux.grid.FiltersFeature', 'Ext.toolbar.Paging', 'Ext.ux.ajax.JsonSimlet', 'Ext.ux.ajax.SimManager' ]); Ext.define('Product', { extend: 'Ext.data.Model', fields: [{ name: 'id', type: 'int' }, { name: 'company' }, { name: 'price', type: 'float' }, { name: 'date', type: 'date', dateFormat: 'Y-m-d' }, { name: 'visible', type: 'boolean' }, { name: 'size' }] }); Ext.onReady(function(){ Ext.ux.ajax.SimManager.init({ delay: 300, defaultSimlet: null }).register({ 'myData': { data: [ ['small', 'small'], ['medium', 'medium'], ['large', 'large'], ['extra large', 'extra large'] ], stype: 'json' } }); var optionsStore = Ext.create('Ext.data.Store', { fields: ['id', 'text'], proxy: { type: 'ajax', url: 'myData', reader: 'array' } }); Ext.QuickTips.init(); // for this demo configure local and remote urls for demo purposes var url = { local: 'grid-filter.json', // static data file remote: 'grid-filter.php' }; // configure whether filter query is encoded or not (initially) var encode = false; // configure whether filtering is performed locally or remotely (initially) var local = true; var store = Ext.create('Ext.data.JsonStore', { // store configs autoDestroy: true, model: 'Product', proxy: { type: 'ajax', url: (local ? url.local : url.remote), reader: { type: 'json', root: 'data', idProperty: 'id', totalProperty: 'total' } }, remoteSort: false, sorters: [{ property: 'company', direction: 'ASC' }], pageSize: 50 }); var filters = { ftype: 'filters', // encode and local configuration options defined previously for easier reuse encode: encode, // json encode the filter query local: local, // defaults to false (remote filtering) // Filters are most naturally placed in the column definition, but can also be // added here. filters: [{ type: 'boolean', dataIndex: 'visible' }] }; // use a factory method to reduce code while demonstrating // that the GridFilter plugin may be configured with or without // the filter types (the filters may be specified on the column model var createColumns = function (finish, start) { var columns = [{ dataIndex: 'id', text: 'Id', // instead of specifying filter config just specify filterable=true // to use store's field's type property (if type property not // explicitly specified in store config it will be 'auto' which // GridFilters will assume to be 'StringFilter' filterable: true, width: 30 //,filter: {type: 'numeric'} }, { dataIndex: 'company', text: 'Company', id: 'company', flex: 1, filter: { type: 'string' // specify disabled to disable the filter menu //, disabled: true } }, { dataIndex: 'price', text: 'Price', filter: { //type: 'numeric' // specify type here or in store fields config }, width: 70 }, { dataIndex: 'size', text: 'Size', filter: { type: 'list', store: optionsStore //,phpMode: true } }, { dataIndex: 'date', text: 'Date', filter: true, renderer: Ext.util.Format.dateRenderer('m/d/Y') }, { dataIndex: 'visible', text: 'Visible' // this column's filter is defined in the filters feature config }]; return columns.slice(start || 0, finish); }; var grid = Ext.create('Ext.grid.Panel', { border: false, store: store, columns: createColumns(4), loadMask: true, features: [filters], dockedItems: [Ext.create('Ext.toolbar.Paging', { dock: 'bottom', store: store })], emptyText: 'No Matching Records' }); // add some buttons to bottom toolbar just for demonstration purposes grid.child('pagingtoolbar').add([ '->', { text: 'Encode: ' + (encode ? 'On' : 'Off'), tooltip: 'Toggle Filter encoding on/off', enableToggle: true, handler: function (button, state) { var encode = (grid.filters.encode !== true); var text = 'Encode: ' + (encode ? 'On' : 'Off'); grid.filters.encode = encode; grid.filters.reload(); button.setText(text); } }, { text: 'Local Filtering: ' + (local ? 'On' : 'Off'), tooltip: 'Toggle Filtering between remote/local', enableToggle: true, handler: function (button, state) { var local = (grid.filters.local !== true), text = 'Local Filtering: ' + (local ? 'On' : 'Off'), newUrl = local ? url.local : url.remote, store = grid.view.getStore(); // update the GridFilter setting grid.filters.local = local; // bind the store again so GridFilters is listening to appropriate store event grid.filters.bindStore(store); // update the url for the proxy store.proxy.url = newUrl; button.setText(text); store.load(); } }, { text: 'All Filter Data', tooltip: 'Get Filter Data for Grid', handler: function () { var data = Ext.encode(grid.filters.getFilterData()); Ext.Msg.alert('All Filter Data',data); } },{ text: 'Clear Filter Data', handler: function () { grid.filters.clearFilters(); } },{ text: 'Add Columns', handler: function () { if (grid.headerCt.items.length < 6) { grid.headerCt.add(createColumns(6, 4)); grid.view.refresh(); this.disable(); } } } ]); var win = Ext.create('Ext.Window', { title: 'Grid Filters Example', height: 400, width: 700, layout: 'fit', items: grid }).show(); store.load(); }); </script> </head> <body> <h1>我的ExtJS4.2学习之路</h1> <hr /> 作者:束洋洋 开始日期:2013年11月26日 22:57:53 <h2>深入浅出ExtJS之树形表格</h2> <div id="grid"></div> </body> </html>
发表评论
-
extjs studies four treePanel
2016-02-10 21:17 672The use of the tree is very fre ... -
extjs4.0----Grid To Grid拖拽示例
2016-02-08 22:14 685<script type="text/ja ... -
ExtJs4之TreePanel
2016-02-08 21:51 517Tree介绍 树形结构,是程序开发,不可缺少的组件之一。Ext ... -
ExtJS4.x treegrid 控件复选框的研究
2016-02-08 21:46 460最近在研究ExtJS4.x版本,官方在发布包中包含了一个tre ... -
Ext JS 2.0 IDE
2010-02-06 10:00 2038Aptana Studio 一谈到JavaScript ... -
Ext.data.Store介绍
2009-04-18 18:30 2077var store = new Ext.data.Stor ... -
Ext中的get、getDom、getCmp、getBody、getDoc的区别
2009-04-18 18:15 956Ext中包含了几个以get开 ... -
Ext2.0:Json 介绍以及与xml的区别
2009-04-18 18:12 1050转载:http://blog.csdn.net/wayfoon ... -
Ext2.0:Ext登陆窗口代码
2009-04-18 17:36 1687转载:http://blog.csdn.net/wayfoon ...
相关推荐
它提供了大量的组件,如表格、面板、表单、树形视图等,以及一套完整的 MVC(模型-视图-控制器)架构。在这个项目中,ExtJS 4.2 被用于构建前端用户界面,展示数据,处理用户交互,并通过 AJAX 技术与后端 Node.js ...
综上所述,`ExtJs4.2 下拉框树`的实现涉及到了组件扩展、树形数据处理、界面布局和交互设计等多个方面,通过对`TreePicker.js`的修改,开发者成功地克服了原生框架的限制,提供了更符合需求的下拉树功能。
它提供了大量的UI组件,如表格、图表、表单、树形菜单等,以及一个强大的数据包管理器,可以方便地与服务器通信。此外,ExtJS支持响应式设计,确保了在不同设备上的良好表现。 ### Java与ExtJS的集成 在企业级开发...
它的组件库丰富,支持拖放、表格、表单、树形视图等多种UI元素,使得开发出的界面具有很高的交互性和美观性。在用户管理场景下,ExtJS可以用于创建表格展示用户信息,表单用于输入和编辑用户数据,以及各种按钮实现...
在这个文件管理系统中,ExtJS4.2可能被用于创建用户界面,提供交互式的组件,如表格、树形结构和表单,用于展示文件列表、进行文件操作以及用户管理等。 4. **HTML5预览**:HTML5引入了一系列新特性,如File API,...
2. **组件丰富**:经典主题支持大量的组件,如表格、树形视图、图表、表单、窗口、面板等,这些组件都经过精心设计,可以方便地组合成复杂的应用界面。 3. **可扩展性**:Ext JS允许开发者创建自定义主题,通过SASS...
它支持现代浏览器,包括IE8+,并且提供了一套完整的组件库,如表格、面板、窗口、树形视图等,以及数据绑定和模型层,使得开发响应式和数据驱动的应用变得简单。 2. **ux 插件** - `ux`目录下的插件是社区贡献的...
通过上述内容,我们可以看到EXTJS的树型分页组件是如何有效地处理大量树节点的。它通过分批加载数据,显著提高了大尺寸树结构的加载速度,同时也保持了良好的用户体验。在实际项目中,结合适当的服务器端策略,EXTJS...
它提供了丰富的组件库,如表格、表单、树形结构和图表,以及强大的数据绑定和远程数据通信机制。EXTJS4的MVC架构使得代码组织清晰,易于维护。在本示例中,EXTJS4将负责前端的用户界面展示,包括表格显示数据、表单...
1. **组件化架构**:ExtJS的核心是它的组件系统,这使得开发者可以方便地组合和复用各种UI元素,如表格、面板、表单、树形视图等。每个组件都有自己的属性、方法和事件,可以独立工作,也可以与其他组件相互嵌套。 ...
5. **创建组件**:EXTJS提供了大量的预定义组件,如面板(Panel)、表格(Grid)、树形控件(Tree)、表单(Form)等。在`app`目录下创建对应的类文件,如`views/MyPanel.js`,定义组件的配置和行为。 6. **数据...
- **Tree Panel**:树形结构组件,适用于展示层级关系数据。 - **Button**:按钮组件,触发事件或动作的基本单元。 - **Checkbox**:复选框组件,用于实现多选功能。 - **Radio Button**:单选按钮组件,用于实现...
在ExtJS4中,下拉树组件(TreeComboBox)是一种特殊的组合框,它结合了下拉列表和树形结构的功能,允许用户通过选择树节点来填充组合框的值。这种组件广泛应用于需要展示分层数据结构的应用场景中。 #### 二、核心...
3. **组件增强**:EXTJS中的各个组件,如表格(Grid)、树形视图(Tree)、表单(Form)等,可能在4.2.3版本中得到了改进。例如,表格排序和过滤可能更加智能,表单验证更准确,树形视图的展开和折叠性能提升。 4. ...
下拉树是一种特殊类型的下拉列表,其中的选项以树形结构组织,这在处理层次关系的数据时非常有用,比如部门结构、地区层级等。 在ExtJS 4.2中实现下拉树,我们需要配置ComboBox的以下关键属性: 1. **store**: 这...
EXTJS 4.2版本包含了丰富的组件库,如表格、面板、表单、树形视图等,以及强大的数据绑定和布局管理功能。在Struts2框架下,EXTJS可以用于创建前端用户界面,提供美观且交互性强的网页效果,与后端的Struts2进行数据...
1. **ExtJS组件库**:ExtJS包含了大量的预定义UI组件,如表格、树形视图、表单、按钮、面板等,这些组件可以帮助快速构建用户界面。 2. **数据模型和Store**:ExtJS的数据模型(Model)用于定义数据结构,Store则...
- **特点**: 展示了如何使用ExtJS创建复杂的用户界面,如网格、树形视图等。 **7.2 SimpleTask任务跟踪程序** - **概述**: SimpleTask是一个基于Google Gears数据库的任务跟踪程序,演示了如何使用ExtJS与本地存储...
10.12 表格与树形的结合——Ext.ux.tree.ColumnTree 第11章 其他布局类简介 11.1 标准布局类 11.1.1 折叠布局——AccordionLayout 11.1.2 边框布局——BorderLayout 11.1.3 卡片式布局——CardLayout 11.1.4 ...
ExtJS框架提供了许多强大的功能和组件,例如表格控件、树形控件、表单控件等,使开发者能够快速构建RIA应用程序。 知识点: 1. ExtJS框架的基本概念和功能 2. Ext.grid.GridPanel的基本使用和配置 3. Ext....