鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-26/184.html

---------------------------------------------------------------------------------------

一、进度条分页控件

上面红色框中的是进度条分页控件,这是表格扩展组件。如何做到的呢?

首先我们需要引入扩展组件才可以使用:

//引入扩展组件
Ext.Loader.setConfig({enabled: true}); Ext.Loader.setPath('Ext.ux', '../ExtJS4.2/ux/'); Ext.require([
'Ext.data.*',
'Ext.grid.*',
'Ext.util.*',
'Ext.tip.QuickTipManager',
'Ext.ux.data.PagingMemoryProxy',
'Ext.ux.ProgressBarPager'
]);

在表格的bbar中引入组件类:

bbar: Ext.create('Ext.PagingToolbar', {
pageSize: 10,
store: store,
displayInfo: true,
plugins: new Ext.ux.ProgressBarPager()
})

下面是完整代码:

/**
* Grid
* 此js演示了ExtJS之进度条分页组件
* bug:1.进度条分页组件不支持IE浏览器;2.表格加载的是本地数据,不能真正进行分页(进度条可显示正确信息。)
*/
//引入扩展组件
Ext.Loader.setConfig({enabled: true}); Ext.Loader.setPath('Ext.ux', '../ext-4.2.1/ux/'); Ext.require([
'Ext.data.*',
'Ext.grid.*',
'Ext.util.*',
'Ext.tip.QuickTipManager',
'Ext.ux.data.PagingMemoryProxy',
'Ext.ux.ProgressBarPager'
]); function getRootPath(){
var curWwwPath=window.document.location.href;
var pathName=window.document.location.pathname;
var pos=curWwwPath.indexOf(pathName);
var localhostPaht=curWwwPath.substring(0,pos);
var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
return(localhostPaht+projectName);
} //表格数据最起码有列、数据、转换原始数据这3项
Ext.onReady(function(){
//定义列
var columns = [
{header:'编号',dataIndex:'id',width:50}, //sortable:true 可设置是否为该列进行排序
{header:'名称',dataIndex:'name',width:80},
{header:'描述',dataIndex:'descn',width:112},
{header:'状态',dataIndex:'status',width:80,renderer:function(value){
if(value=='可用'){
return "<span style='color:green;font-weight:bold';>可用</span><img src='"+getRootPath()+"/js/component/images/right.gif' />";
} else {
return "<span style='color:red;font-weight:bold';>禁用</span><img src='"+getRootPath()+"/js/component/images/wrong.gif'/>";
}
}}
];
//定义数据
var data =[
['1','小王','描述01','可用'],
['2','李四','描述02','禁用'],
['3','张三','描述03','可用'],
['4','束洋洋','思考者日记网','可用'],
['5','高飞','描述05','禁用'],
['6','小王','描述01','可用'],
['7','李四','描述02','禁用'],
['8','张三','描述03','可用'],
['9','束洋洋','思考者日记网','可用'],
['10','高飞','描述05','禁用']
];
//转换原始数据为EXT可以显示的数据
var store = new Ext.data.ArrayStore({
data:data,
fields:[
{name:'id'}, //mapping:0 这样的可以指定列显示的位置,0代表第1列,可以随意设置列显示的位置
{name:'name'},
{name:'descn'},
{name:'status'}
]
// buffered:true //缓冲式表格视图
});
//加载数据
// store.load();
store.load({params:{start:0,limit:2}}); //创建表格
var grid = new Ext.grid.GridPanel({
renderTo:'grid', //渲染位置
width:550,
autoHeight:true,
store:store,
frame:true,
columns:columns, //显示列
stripeRows:true, //斑马线效果
//enableColumnMove: false, //禁止拖放列
//enableColumnResize: false, //禁止改变列宽度
loadMask:true, //显示遮罩和提示功能,即加载Loading……
//forceFit:true //自动填满表格
bbar: Ext.create('Ext.PagingToolbar', {
pageSize: 2,
store: store,
displayInfo: true,
plugins: new Ext.ux.ProgressBarPager()
})
});
});

二、进度条分页控件——分组表头(Grouping GridView)

借助分组表头(Grouping GridView)这个组件,我们可以实现内容更加复杂的表格组件,有时候我们做报表可能会经常碰到,如下图所示:

上面的效果是怎么实现的呢?网上说是用扩展组件,我自己试了下,发现ExtJS4.2里已经没有这种方法了,我自己琢磨出来下面的方法,你们可以试试:

//定义列
var columns = [
{
text:'第一组',
locked: true,
columns:[
{header:'编号',dataIndex:'id',width:50},
{header:'名称',dataIndex:'name',width:80},
{header:'描述',dataIndex:'descn',width:112},
{header:'状态',dataIndex:'status',width:80,renderer:function(value){
if(value=='可用'){
return "<span style='color:green;font-weight:bold';>可用</span><img src='images/right.gif' />";
} else {
return "<span style='color:red;font-weight:bold';>禁用</span><img src='images/wrong.gif' />";
}
}}]
},
{text:'第2组',
columns:[
{header:'编号',dataIndex:'id',width:50},
{header:'名称',dataIndex:'name',width:80},
{header:'描述',dataIndex:'descn',width:112},
{header:'状态',dataIndex:'status',width:80,renderer:function(value){
if(value=='可用'){
return "<span style='color:green;font-weight:bold';>可用</span><img src='images/right.gif' />";
} else {
return "<span style='color:red;font-weight:bold';>禁用</span><img src='images/wrong.gif' />";
}
}}]
}
];

上面的方法主要是列里嵌套列,这样就可以实现分组表头的效果。如果想冻结列,那么可以在需要的分组表头里加上locked: true

下面是完整代码:

/**
* Grid
* 此js演示了ExtJS之进度条分页组件
* bug:1.进度条分页组件不支持IE浏览器;2.表格加载的是本地数据,不能真正进行分页(进度条可显示正确信息。)
*/
//引入扩展组件
Ext.Loader.setConfig({enabled: true}); Ext.Loader.setPath('Ext.ux', '../ext-4.2.1/ux/'); Ext.require([
'Ext.data.*',
'Ext.grid.*',
'Ext.util.*',
'Ext.tip.QuickTipManager',
'Ext.ux.data.PagingMemoryProxy',
'Ext.ux.ProgressBarPager'
]); function getRootPath(){
var curWwwPath=window.document.location.href;
var pathName=window.document.location.pathname;
var pos=curWwwPath.indexOf(pathName);
var localhostPaht=curWwwPath.substring(0,pos);
var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
return(localhostPaht+projectName);
}
//表格数据最起码有列、数据、转换原始数据这3项
Ext.onReady(function(){
//定义列
var columns = [
{
text:'第一组',
locked: true,
columns:[
{header:'编号',dataIndex:'id',width:50},
{header:'名称',dataIndex:'name',width:80},
{header:'描述',dataIndex:'descn',width:112},
{header:'状态',dataIndex:'status',width:80,renderer:function(value){
if(value=='可用'){
return "<span style='color:green;font-weight:bold';>可用</span><img src='"+getRootPath()+"/js/component/images/right.gif' />";
} else {
return "<span style='color:red;font-weight:bold';>禁用</span><img src='"+getRootPath()+"/js/component/images/wrong.gif' />";
}
}}]
},
{text:'第2组',
columns:[
{header:'编号',dataIndex:'id',width:50},
{header:'名称',dataIndex:'name',width:80},
{header:'描述',dataIndex:'descn',width:112},
{header:'状态',dataIndex:'status',width:80,renderer:function(value){
if(value=='可用'){
return "<span style='color:green;font-weight:bold';>可用</span><img src='"+getRootPath()+"/js/component/images/right.gif' />";
} else {
return "<span style='color:red;font-weight:bold';>禁用</span><img src='"+getRootPath()+"/js/component/images/wrong.gif' />";
}
}}]
}
];
//定义数据
var data =[
['1','小王','描述01','可用'],
['2','李四','描述02','禁用'],
['3','张三','描述03','可用'],
['4','束洋洋','思考者日记网','可用'],
['5','高飞','描述05','禁用'],
['6','小王','描述01','可用'],
['7','李四','描述02','禁用'],
['8','张三','描述03','可用'],
['9','束洋洋','思考者日记网','可用'],
['10','高飞','描述05','禁用'],
['11','小王','描述01','可用'],
['12','李四','描述02','禁用'],
['13','张三','描述03','可用'],
['14','束洋洋','思考者日记网','可用'],
['15','高飞','描述05','禁用'],
['16','小王','描述01','可用'],
['17','李四','描述02','禁用'],
['18','张三','描述03','可用'],
['19','束洋洋','思考者日记网','可用'],
['20','高飞','描述05','禁用'],
['21','小王','描述01','可用'],
['22','李四','描述02','禁用'],
['23','张三','描述03','可用'],
['24','束洋洋','思考者日记网','可用'],
['25','高飞','描述05','禁用']
];
//转换原始数据为EXT可以显示的数据
var store = new Ext.data.ArrayStore({
data:data,
fields:[
{name:'id'}, //mapping:0 这样的可以指定列显示的位置,0代表第1列,可以随意设置列显示的位置
{name:'name'},
{name:'descn'},
{name:'status'}
],
//buffered:true //缓冲式表格视图
});
//加载数据
store.load(); //创建表格
var grid = new Ext.grid.GridPanel({
renderTo:'grid', //渲染位置
autoHeight:true,
width:665,
height: 350,
store:store,
frame:true,
columns:columns, //显示列
stripeRows:true, //斑马线效果
//enableColumnMove: false, //禁止拖放列
//enableColumnResize: false, //禁止改变列宽度
loadMask:true, //显示遮罩和提示功能,即加载Loading……
//forceFit:true //自动填满表格
bbar: Ext.create('Ext.PagingToolbar', {
pageSize: 10,
store: store,
displayInfo: true,
plugins: new Ext.ux.ProgressBarPager()
})
});
});

后记:1.Extjs的分页始终有问题,此篇博客的数据加载的是本地数据,也无法进行分页。2.IE浏览器不支持本篇博客中的进度条分页控件(ProgressBarPager插件)。

ExtJS4.2学习(14)基于表格的扩展插件(2)(转)的更多相关文章

  1. ExtJS4.2学习(13)基于表格的扩展插件---rowEditing

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/182.html --------------- ...

  2. ExtJS4.2学习(12)基于表格的右键菜单(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/181.html --------------- ...

  3. ExtJS4.2学习(九)属性表格控件PropertyGrid(转)

    鸣谢网址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-15/178.html ------------- ...

  4. ExtJS4.2学习(15)树形表格(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-27/185.html --------------- ...

  5. ExtJS4.2学习(10)分组表格控件--GroupingGrid(转)

    鸣谢网址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-17/179.html ------------- ...

  6. ExtJS4.2学习(四)Grid表格中文排序问题(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/173.html --------------- ...

  7. ExtJS4.2学习(三)Grid表格(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-07/172.html --------------- ...

  8. ExtJS4.2学习(11)可拖放的表格(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-18/180.html --------------- ...

  9. 提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件

    Chrome插件,官方名称extensions(扩展程序):为了方便理解,以下都称为插件. 我们开发的插件需要在浏览器里面运行,打开浏览器,通过右上角的三个点(自定义及控制)-更多工具-拓展程序-打开 ...

随机推荐

  1. java学习,从一个字符串中统计同一类型出现的次数

    1.从字符串“AS345asdzf*())sddsWE”中统计大写字母.小写字母.其他类型的出现的次数 String s="AS345asdzf*())sddsWE"; int l ...

  2. 【itclx面向对象二】窥探itcl面向编程源码

    从上一篇博客看出,itcl的语法其实不难,但是有个缺点,编程习惯与当前类似C++常见的面向编程还是有些区别,并且在大型项目实施中这种方式很费劲. 于是有了itclx. 例如: 1.成员变量.成员方法调 ...

  3. 第一章 认识jQuery

    jQuery是一个优秀的JavaScript库,它凭借简洁地语法和跨平台的兼容性,极大地简化了开发人员遍历HTML文档,操作DOM,处理事件,执行动画和开发Ajax操作. jQuery优势:1.轻量级 ...

  4. Html5 Video 实现方案

    来源:http://ask.dcloud.net.cn/article/569 源码下载 前言: 最近项目中需要用到html5 视频播放功能,于是稍微研究了解了下,遇到了很多坑,特此记录下. 一. H ...

  5. 20160522--20160526----mybatis入门基础

    一.基础知识: 1.对原生态jdbc程序(单独使用jdbc开发)问题总结  2.mybatis框架原理 (掌握)  3.mybatis入门程序  4.用户的增.删.改.查  5.SqlMapConfi ...

  6. listview使用checkbox批量删除出现的问题

    1.选中前面的checkbox导致后的checkbox被选中 2.选中后下滑listview,再上滑时被选中的checkbox又变成未选中状态. 问题大都是因为对listview进行代码优化重用con ...

  7. JavaScript中事件绑定的方法总结

    最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScr ...

  8. 九度OJ 1480 最大上升子序列和 -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1480 题目描述: 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列 ...

  9. 深度模拟java动态代理实现机制系类之二

    这次我们要实现的是对任意接口,任意的方法进行特定的代理 这里不一样的只有Proxy类,要实现对所有方法进行代理,那么重点就在于获得接口的所有方法 import java.io.File; import ...

  10. 异步非阻塞IO的Python Web框架--Tornado

    Tornado的全称是Torado Web Server,从名字上就可知它可用作Web服务器,但同时它也是一个Python Web的开发框架.最初是在FriendFeed公司的网站上使用,FaceBo ...