`

ExtJS 表格 树结构

 
阅读更多
Ext.require(['*']);
Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [ 'name', 'email', 'phone' ]
});
var userStore = Ext.create('Ext.data.Store', {
    model: 'User',
    data: [
        { name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-111-1224' },
        { name: 'Bart', email: 'bart@simpsons.com', phone: '555-222-1234' },
        { name: 'Homer', email: 'home@simpsons.com', phone: '555-222-1244' },
        { name: 'Marge', email: 'marge@simpsons.com', phone: '555-222-1254' }
    ]
});
Ext.onReady(function(){
    Ext.create('Ext.grid.Panel',{
renderTo:Ext.getBody(),
//selType:'cellmodel',//ѡ��ij����Ԫ��
store:userStore,
width:400,
height:200,
title:'Application Users',
columns:[
         {
        text:'Name',
        width:100,
        sortable:false,
        hideable:false,
        dataIndex:'name'
         },{
        text:'Email Address',
        width:150,
        dataIndex:'email',
        //format the email address using a custom renderer
        renderer:function(value){
        return Ext.String.format('<a href="mailto:{0}">{1}</a>',value,value);
        },
        hidden:false
         },{
        text:'Phone Number',
        flex:1,
        dataIndex:'phone'
         }
         ]
});
   
   
    Ext.create('Ext.data.Store', {
        storeId:'simpsonsStore',
        fields:['name', 'email', 'phone'],
        data:{'items':[
            { 'name': 'Lisa',  "email":"lisa@simpsons.com",  "phone":"555-111-1224"  },
            { 'name': 'Bart',  "email":"bart@simpsons.com",  "phone":"555-222-1234" },
            { 'name': 'Homer', "email":"home@simpsons.com",  "phone":"555-222-1244"  },
            { 'name': 'Marge', "email":"marge@simpsons.com", "phone":"555-222-1254"  }
        ]},
        proxy: {
            type: 'memory',
            reader: {
                type: 'json',
                root: 'items'
            }
        }
    });

    Ext.create('Ext.grid.Panel', {
        title: 'Simpsons',
        store: Ext.data.StoreManager.lookup('simpsonsStore'),
        columns: [
            { header: 'Name',  dataIndex: 'name',field:'textfield' },
            { header: 'Email', dataIndex: 'email', flex: 1 ,
            /**�ɱ༭��Ԫ��*/
            field:{
            xtype:'textfield',
            allowBlank:false
            }},
            { header: 'Phone', dataIndex: 'phone' }
        ],
  //      selType:'cellmodel',//����ѡ�е�Ԫ��
        selType:'rowmodel',
        plugins:[
                 Ext.create('Ext.grid.plugin.RowEditing',{
                clickToEdit:1
                 })
                 ],
        height: 200,
        width: 400,
        renderTo: Ext.getBody()
    });
   
    //Grouping
    var store = Ext.create('Ext.data.Store', {
        storeId:'employeeStore',
        fields:['name', 'senority', 'department'],
        groupField: 'department',
        data: {'employees':[
            { "name": "Michael Scott",  "senority": 7, "department": "Manangement" },
            { "name": "Dwight Schrute", "senority": 2, "department": "Sales" },
            { "name": "Jim Halpert",    "senority": 3, "department": "Sales" },
            { "name": "Kevin Malone",   "senority": 4, "department": "Accounting" },
            { "name": "Angela Martin",  "senority": 5, "department": "Accounting" }
        ]},
        proxy: {
            type: 'memory',
            reader: {
                type: 'json',
                root: 'employees'
            }
        }
    });

    Ext.create('Ext.grid.Panel', {
        title: 'Employees',
        store: Ext.data.StoreManager.lookup('employeeStore'),
        columns: [
            { header: 'Name',     dataIndex: 'name' },
            { header: 'Senority', dataIndex: 'senority' }
        ],
        features: [{ftype:'grouping'}],
        width: 200,
        height: 275,
        renderTo: Ext.getBody()
    });
    //paging
    var itemsPerPage=2;
    var userStorePage = Ext.create('Ext.data.Store', {
        model: 'User',
        autoLoad:true,
        pageSize:itemsPerPage,
        data: {
        "success": true,
        "total": 12,
        'users':
        [
             { name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-111-1224'},
             { name: 'Bart', email: 'bart@simpsons.com', phone: '555-222-1234'},
             { name: 'Homer', email: 'home@simpsons.com', phone: '555-222-1244'},
             { name: 'Marge', email: 'marge@simpsons.com', phone: '555-222-1254'},
             { name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-111-1224'}         
         ]
        },
        proxy: {
            type: 'memory',
            reader: {
                type: 'json',
                root: 'users',
                totalProperty:'total'
            }
        }
    });
  
// specify segment of data you want to load using params
    userStorePage.load({
        params:{
            start:0,
            limit: itemsPerPage
        }
    });
    /**�������userStorePage Ч��һ��
     * var userStorePage = Ext.create('Ext.data.Store', {
        model: 'User',
        autoLoad: true,
        pageSize: 4,
        proxy: {
            type: 'ajax',
            url : 'MyData/users.json',
            reader: {
                type: 'json',
                root: 'users',
                totalProperty: 'total'
            }
        }
    });
     * */
     Ext.create('Ext.grid.Panel',{
    store:userStorePage,
    columns:[
         {
        text:'Name',
        width:100,
        sortable:false,
        hideable:false,
        dataIndex:'name'
         },{
        text:'Email Address',
        width:150,
        dataIndex:'email',
        //format the email address using a custom renderer
        renderer:function(value){
        return Ext.String.format('<a href="mailto:{0}">{1}</a>',value,value);
        },
        hidden:false
         },{
        text:'Phone Number',
        flex:1,
        dataIndex:'phone'
         }
         ],
         dockedItems:[{
        xtype:'pagingtoolbar',
        store:userStorePage,
        dock:'bottom',
        displayInfo:true
         }],
        renderTo: Ext.getBody()
     });
     //tree
Ext.create('Ext.tree.Panel',{
renderTo:Ext.getBody(),
title:'Simple Tree',
width:150,
root:{
text:'Root',
expanded:true,
children:[
           {
           text:'child 1',
           leaf:true
           },{
           text:'child 2',
           leaf:true
           },{
           text:'child 3',
           expanded:true,
           children:[
                     {
                    text:'Grandchild',
                    leaf:true
                     }
                     ]
           }
           ]
}
});
var treeStore=Ext.create('Ext.data.TreeStore',{
root:{
text:'Root treeStore',
expanded:true,
children:[
           {
           text:'child 1',
           leaf:true
           },{
           text:'child 2',
           leaf:true
           },{
           text:'child 3',
           expanded:true,
           children:[
                     {
                    text:'Grandchild',
                    leaf:true
                     }
                     ]
           }
           ]
}
});
Ext.create('Ext.tree.Panel',{
renderTo:Ext.getBody(),
title:'treeStore',
width:150,
store:treeStore,
useArrows:true//�Ӻš���> ��ͷ
});

//add nodes to the tree
var tree=Ext.create('Ext.tree.Panel', {renderTo:Ext.getBody(),useArrows:true});
tree.setRootNode({
text:'Root',
expanded:true,
children:[
           {
           text:'child 1',
           leaf:true
           },{
           text:'child 2',
           leaf:true
           }
           ]
});
var root=tree.getRootNode();
var parent=root.appendChild({text:'Parent 1'});
parent.appendChild({
text:'child 3',
leaf:true
});
var child = parent.insertChild(0, {
    text: 'Child 2.5',
    leaf: true
});
parent.insertBefore({
    text: 'Child 2.75',
    leaf: true
}, child.nextSibling);
parent.expand();


//异步加载tree
var asyRoot=new Ext.tree.AsyncTreeNode({
expanded:true,
text:'系统菜单',
id:'',//
draggable:false,
iconCls:'b'
});

var asyTree=new Ext.tree.TreePanel({
title:'树形结构',
root:asyRoot,
border:false,
autoHeight:true,
renderTo:Ext.getBody(),
autoScroll:true,
animate:true,//允许使用动画展开 折叠
enableDD:true,//允许拖放
containerScroll:true,//登记本容器ScrollManager
listeners:{//在加载之前监听一个事件
'beforeload':function(data){
node.loader=new Ext.tree.TreeLoader({
url:'viewtree.do?id='+node.id,//请求路径
baseParams:{//请求参数


}
});
}
}
});
});




































分享到:
评论

相关推荐

    Extjs 自定义树结构实现以及动态表头实现

    在本文中,我们将深入探讨如何使用ExtJS框架来实现自定义树结构以及动态表头的功能。ExtJS是一款强大的JavaScript库,常用于构建富客户端应用程序,它提供了丰富的UI组件和强大的数据绑定机制。VS2015是Visual ...

    extjs表格(表格后台数据读,分页),树(后台数据读取,复选框联动)的基本操作示例

    这通常通过监听`checkchange`事件来实现,然后遍历树结构以同步其他节点的状态。 3. **后台数据读取**:后台数据通常由服务器端语言如ASP.NET(VS2008环境下可能使用的技术)处理,返回JSON或XML格式的数据。这些...

    EXTJS 4 树形表格组件使用示例

    在EXTJS 4中,树形表格组件不仅支持基本的节点操作,如展开、折叠、拖放,还提供了丰富的数据绑定和筛选功能,是处理复杂数据结构的理想选择。 首先,让我们深入了解一下EXTJS 4树形表格组件的特性: 1. **层级...

    Extjs treeselector 树结构选择器

    在ExtJS中,树结构的数据可以通过`store`来管理,通常使用JSON格式的数据源。 2. **Ext.tree.Panel(树面板)**:这是显示树形数据的主要组件,包含了节点的渲染、交互逻辑等。可以设置`rootVisible`属性来控制是否...

    Extjs树Demo

    1. **创建树结构**:在ExtJS中,树的数据源通常是一个JSON对象或Store,其中包含了节点的信息,如ID、文本、子节点等。例如: ```javascript var treeStore = Ext.create('Ext.data.TreeStore', { root: { ...

    extjs表格Grid比较全面的功能

    ExtJS表格Grid是一款强大的JavaScript组件,它在Web应用中用于展示和操作数据,尤其是在复杂的业务逻辑和大量数据处理中表现出色。这篇博客文章主要探讨了ExtJS Grid的全面功能,结合源码分析和实用工具,帮助开发者...

    EXTJS动态树支持checkbox 全选

    标题中的“EXTJS动态树支持checkbox全选”指的是EXTJS中树组件的一个特性,即在树形结构中添加复选框(checkbox)功能,并支持全选和全取消选中操作。这样的功能对于需要用户进行多项选择的场景非常有用,比如文件...

    Ext实现的拖拽树和表格之间的拖拽

    在本文中,我们将深入探讨如何使用ExtJS框架实现拖拽功能,特别是在树形视图(Tree)和表格视图(Grid)之间的交互。ExtJS是一个强大的JavaScript库,它提供了丰富的用户界面组件,包括可拖拽的元素,这使得在Web...

    tree 动态树 extjs ajax

    这种特性使得树结构在不阻塞用户界面的情况下,能够逐步加载子节点,减少了初次加载时的数据量。 **ExtJS TreePanel** 在ExtJS中,动态树通常通过TreePanel来实现。TreePanel是一个可配置的组件,可以设置各种属性...

    ExtJs目录树、异步树demo(内涵各种例子10个以及Ext中文API).rar

    在`treedemo.rar`和`extjstree.rar`等文件中,可能包含了不同类型的树结构示例,如基本树、可编辑树、拖放树等。 2. **异步树(Asynchronous Tree)**: 异步树是一种优化加载大量数据的方法,它通过按需加载节点...

    Extjs2分页树 带查询功能

    在ExtJS中,"分页树"是一种结合了树形数据结构和分页功能的组件,它允许用户以层级方式浏览大量数据,并通过分页来管理这些数据,提高用户体验。在"Extjs2分页树 带查询功能"这个主题中,我们将深入探讨如何在ExtJS ...

    ExtJS4下拉树组件

    - **数据绑定**: 组件支持与数据存储进行绑定,可以动态加载和显示树结构。 - **交互操作**: 支持展开/折叠节点、选中节点等操作,并能够监听这些操作触发的事件。 - **样式定制**: 可以自定义组件的外观样式,如...

    ExtJs4.2 下拉框树

    在实际开发过程中,我们还需要确保这个自定义的下拉树组件能够与其他ExtJs组件良好地协作,例如与表单、表格或其他UI元素的集成。同时,考虑到性能和用户体验,应当尽量优化数据加载和渲染过程,避免一次性加载大量...

    extjs带复选框的树包括全选 反选 子选父以及 父选子

    在ExtJS中,树形组件(TreePanel)是一个常用的功能,用于展示层次结构的数据。当树形组件结合复选框时,可以实现用户对节点的选择操作,如全选、反选、子选父以及父选子。这些功能在数据管理、权限分配等场景中非常...

    Extjs树分页组件扩展

    在ExtJS中,树形(Tree)组件是一种用于展示层级数据的强大工具,它允许用户以树状结构浏览和操作数据。然而,在处理大量数据时,一次性加载所有节点可能导致页面响应变慢,这时就需要引入分页功能。"Extjs树分页...

    ExtJS5.0 树形菜单实例

    在ExtJS 5.0 版本中,TreePanel 是实现树形结构数据展示的重要组件,常用于构建如文件系统、组织架构或层级关系的菜单。下面我们将深入探讨如何利用ExtJS 5.0 创建一个树形菜单实例。 1. **TreePanel 基础** ...

    EXTJS动态树的实现

    EXTJS是一个强大的前端框架,提供了丰富的组件库,包括表格、表单、树、图表等多种元素,使得开发者能够创建出功能丰富且用户体验良好的Web应用。在EXTJS中,动态树的实现涉及到数据加载、节点操作、事件处理等多个...

    ExtJS4学习笔记十一 树控件的使用

    在本篇《ExtJS4学习笔记十一:树控件的使用》中,我们将深入探讨ExtJS框架中的树形控件(TreePanel),这是一种强大的UI组件,用于展示层次结构的数据。ExtJS4对树控件的功能进行了增强,使其更加灵活且易于使用。...

    ExtJs 连接数据库并且生成动态树

    如果数据库中的数据发生变化,你可以通过重新加载`Store`或更新单个记录来保持树结构的同步。 通过以上步骤,你可以实现ExtJs连接数据库并动态生成树形结构,以直观地展示层级关系数据。这在组织结构、文件系统、...

Global site tag (gtag.js) - Google Analytics