zoukankan      html  css  js  c++  java
  • extjs表格控件

    1. 表格控件
    1.1基本表格 GridPanel
    ExtJS中的表格功能非常强大,包括了排序、缓存、拖动、隐藏某一列、自动显示行号、列汇总、单元格编辑
    等实用功能。
    表格由类Ext.grid.GridPanel定义,继承自Panel,其xtype为grid。ExtJS中,表格Grid必须包含
    列定义信息,并指定表格的数据存储器Store。表格的列信息由类Ext,grid.ColumnModel定义,而表格的
    数据存储器由Ext.data.Store 定义, 数据存储器根据解析的数据不同分为
    JsonStore、SimpleStore、GroupinStore等。我们看一个简单的使用表格控件的代码:
    Ext.onReady(function(){
    var data=[
    [1, '任务管理系统', '3D','www.renwu.com'],
    [2, 'Blog系统', 'BJT','www.blog.org'],
    [3, 'Ext管理系统', '3d','www.Extrw.com'],
    [4, '中流网', 'ZLW','www.zlweb.cn']
    ];
    var store=new Ext.data.SimpleStore({
    data:data,
    fields:["id","name","organization","homepage"]
    });
    var grid = new Ext.grid.GridPanel({
    renderTo:"hello",
    title:"NetJava表格测试",
    height:150,
    600,
    columns:[{header:"项目名称",dataIndex:"name"},
    {header:"开发团队",dataIndex:"organization"},
    {header:"网址",dataIndex:"homepage"}],
    store:store,
    autoExpandColumn:2
    });
    });
    运行上面的代码,可以得到一个简单的表格如下:

    上面的代码中,第一行“var data-…”用来定义表格中要显示的数据,这是一个[][]二维数组;第二行”var
    store=…”用来创建一个数据存储,这是GridPannel需要使用配置属性,数据存储器Store负责把各种各样
    的数据(如二维数组、JSon对象数组、XML文本)等转换成ExtJS的数据记录集Record,关于数据存储器
    Store我们将会在下一节中作专门讲解。第三行”var grid=new Ext.grid.GridPannel(…)”负责创建一个表格,
    表格包含的列由columns配置属性来描述,columns是一个数组,每一行数据元素描述表格的一列信息。
    表格的列信息包含列头显示的文本(header)、列对应的记录集字段(dataIndex)、列是否可排序
    (sorable)、列的渲染函数(renderer)、格式化信息(format)等,在上面的列中只用到了header和
    dataIndex.

    下面我们再来看看表格控件的其它一些特性,修改一下上面的代码,内容如下:
    function showUrl(value){
    return "<a href="+value+">"+value+"</a>";
    }
    Ext.onReady(function(){
    var data=[
    [1, '任务管理系统', '3D','http://www.renwu.com'],
    [2, 'Blog系统', 'BJT','http://www.blog.org'],
    [3, 'Ext管理系统', '3d','http://www.Extrw.com'],
    [4, '中流网', 'ZLW','http://www.zlweb.cn']
    ];
    var store=new Ext.data.SimpleStore({data:data,fields:["id","name","organization","homepage"]});
    var colM=new Ext.grid.ColumnModel([
    {header:"项目名称",dataIndex:"name",sortable:true},
    {header:"开发团队",dataIndex:"organization",sortable:true},
    {header:"网址",dataIndex:"homepage",sortable:true,renderer:showUrl}]);
    var grid = new Ext.grid.GridPanel({
    renderTo:"hello",
    title:"NetJava表格测试",
    height:150,
    600,
    cm:colM,
    store:store,
    autoExpandColumn:2
    });
    });
    上面的代码直接使用Ext.grid.ColumnModel来创建表格的列定义信息,在各列中我们添加了sortable为
    true的属性,表示该列可以排序,另外,买一列的数据渲染方式还可以自己定义,比如上面的代码中.

    我们希望用户在表格中点击网址可以打开这些团队的网站,也就是给网址这一列添加了超连接,运行效
    果如下:

    在定义“网址”的时候加上renderer属性:renderer:showUrl。showUrl是一个自定义的函数,内容是根
    据传入的value参数返回一个包含<a>标签的html片段。自定义的列渲染函数可以实现在单元格中显示自
    己所需要的各种信息,只要是浏览器支持的html都可以。

    除了二维数组以外,表格还能显示其它格式的数据吗,这个是当然的,下面我们来看个例子,将数
    据定义为以下格式:
    var data=[{id:1,
    name:'任务管理系统',
    organization:'3D',
    homepage:'http://www.renwu.com'},
    {id:2,
    name:'Blog系统',
    organization:'BJT',
    homepage:'http://www.renwu.com'},
    {id:3,
    name:'Ext管理系统',
    organization:'3D',
    homepage:'http://www.Extrw.com'},
    {id:4,
    name:'中流网',
    organization:'ZLW',
    homepage:'http://www.zlweb.cn'}
    ];
    也就是说数据变成了一维数组,数组中的每一个元素是一个对象,这些对象包含"id",
    "name","organization","homepage" 等属性,要让表格上显示上面的数据,只要将存储器store 改为
    Ext.data.JsonStore即可,如下:
    var store=new Ext.data.JsonStore({data:data,fields:["id","name","organization","homepage"]});
    上面的代码执行的结果与前面的一样。另外,表格同样能显示xml格式的数据,将上面的数据存放成
    store.xml文件,如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <database>

    <row>
    <id>1</id>
    <name>任务管理系统</name>
    <organization>3D</organization>
    <homepage>http://www.renwu.com</homepage>
    </row>
    <row>
    <id>2</id>
    <name>Blog系统</name>
    <organization>BJT</organization>
    <homepage>http://www.renwu.com</homepage>
    </row>
    <row>
    <id>3</id>
    <name>Ext管理系统</name>
    <organization>3D</organization>
    <homepage>http://www.Extrw.com</homepage>
    </row>
    <row>
    <id>4</id>
    <name>中流网</name>
    <organization>ZLW</organization>
    <homepage>http://www.zlweb.cn</homepage>
    </row>
    </database>
    将js代码数据存储器部分改为:
    function showUrl(value){
    return "<a href='"+value+"' target='_blank'>"+value+"</a>";
    }
    Ext.onReady(function(){
    var store=new Ext.data.Store({
    url:"tab.xml",
    reader:new Ext.data.XmlReader({record:"row"},["id","name","organization","homepage"])
    });
    var colM=new Ext.grid.ColumnModel([
    {header:"项目名称",dataIndex:"name",sortable:true},
    {header:"开发团队",dataIndex:"organization",sortable:true},
    {header:"网址",dataIndex:"homepage",sortable:true,renderer:showUrl}
    ]);
    var grid = new Ext.grid.GridPanel({
    renderTo:"hello",
    title:"NetJava表格测试",

    height:150,
    600,
    cm:colM,
    store:store,
    autoExpandColumn:2
    });
    store.load();
    });
    Store.load()是用来加载数据,执行上面的代码产生的表格与前面的完全一样。

    破罐子互摔
  • 相关阅读:
    ZigBee学习二 LED点对点通信
    ZigBee学习一 任务处理函数_ProcessEvent
    关于count(分组字段)的问题
    hive命令行 显示字段名配置
    Linux 查看当前目录下的文件大小
    apache 端口号与 CDH端口号对比
    dbeaver驱动问题解决方案
    【数学】递推算法之平面分割问题总结
    【HDOJ】(1426)Sudoku Killer (dfs)
    【牛客】牛客小白月赛1(数学)
  • 原文地址:https://www.cnblogs.com/zonglonglong/p/2668482.html
Copyright © 2011-2022 走看看