Extjs4 Treegrid 使用心得分享(经验篇)

Extjs4 Treegrid 使用心得分享(经验篇)

最近调试EXTJS 4的treegrid实例,看了很多水友的文章,以及官方的demo, 没一个可靠的,全都无法显示出来。像对于我们习惯用C++的coder来说,EXTJS简直就是一群无政府土匪来维护的,官网上连个搜索框都没有,找资料基本靠遍历,还是人工的。


复制代码 代码如下:

<link rel="stylesheet" type="text/css" href="css/ext-all.css">

<script type="text/javascript" src="ext-all.js"></script>

<script type="text/javascript" src="treegrid.js"></script>


复制代码 代码如下:

<div ></div>




复制代码 代码如下:


This file is part of Ext JS 4

Copyright (c) 2011 Sencha Inc

Contact: http://www.sencha.com/contact

GNU General Public License Usage

This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html.

If you are unsure which license is appropriate for your use, please contact the sales department at http://www.sencha.com/contact.







Ext.onReady(function() {

//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.json'


folderSort: true


//Ext.ux.tree.TreeGrid is no longer a Ux. You can simply use a tree.TreePanel

var tree = Ext.create('Ext.tree.Panel', {

title: 'Core Team Projects',

width: 500,

height: 300,

renderTo: 'tree-example',//2B的官方和SV党们,这里竟然是getbody,bo你妹埃

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