extjs3.3 实现复杂表头 和锁定列lockinggrird功能。
时间:2011-04-11
来源:互联网
我在Extjs3.3的锁定列lockingrid的例子基础上,添加了复杂的表头功能,但直接报JS错误,不能展示grid了。
Ext.onReady(function() {
Ext.BLANK_IMAGE_URL = 'resources/images/default/s.gif';
var structure = {
Asia: ['Beijing', 'Tokyo'],
Europe: ['Berlin', 'London', 'Paris']
},
products = ['ProductX', 'ProductY'],
fields = [],
columns = [{dataIndex: 'sss',header: 'sss'}];
data = [],
continentGroupRow = [],
cityGroupRow = [];
//构造数据
function generateConfig(){
var arr,
numProducts = products.length;
Ext.iterate(structure, function(continent, cities){
Ext.each(cities, function(city){
Ext.each(products, function(product){
fields.push({
type: 'int',
name: city + product
});
columns.push({
dataIndex: city + product,
header: product,
renderer: Ext.util.Format.usMoney
});
});
arr = [];
for(var i = 0; i < 20; ++i){
arr.push((Math.floor(Math.random()*11) + 1) * 100000);
}
data.push(arr);
});
})
}
// Run method to generate columns, fields, row grouping
generateConfig();
//构造复杂表头
continentGroupRow =[
{},
{header: 'Asia', colspan: 4, align: 'center'},
{header: 'Europe', colspan: 6, align: 'center'}
];
cityGroupRow = [
{},
{header: 'Beijing', colspan: 2, align: 'center'},
{header: 'Tokyo', colspan: 2, align: 'center'},
{header: 'Berlin', colspan: 2, align: 'center'},
{header: 'London', colspan: 2, align: 'center'},
{header: 'Paris', colspan: 2, align: 'center'}
]
//ext3.3的自带插件
var group = new Ext.ux.grid.ColumnHeaderGroup({
rows: [continentGroupRow, cityGroupRow]
});
var fields = [
{type: 'string', name: 'sss'},
{type: 'int', name: 'BeijingProductX'},
{type: 'int', name: 'BeijingProductY'},
{type: 'int', name: 'TokyoProductX'},
{type: 'int', name: 'TokyoProductY'},
{type: 'int', name: 'BerlinProductX'},
{type: 'int', name: 'BerlinProductY'},
{type: 'int', name: 'LondonProductX'},
{type: 'int', name: 'LondonProductY'},
{type: 'int', name: 'ParisProductX'},
{type: 'int', name: 'ParisProductY'}
];
//ÌíŒÓcheckbox
var sm = new Ext.grid.CheckboxSelectionModel();
sm.lock();
// columns at this point is:
var columns = [sm,
{dataIndex: 'sss', header: 'Product',locked:true},
{dataIndex: 'BeijingProductX', header: 'ProductX'},
{dataIndex: 'BeijingProductY', header: 'ProductY'},
{dataIndex: 'TokyoProductX', header: 'ProductX'},
{dataIndex: 'TokyoProductY', header: 'ProductY'},
{dataIndex: 'BerlinProductX', header: 'ProductX'},
{dataIndex: 'BerlinProductY', header: 'ProductY'},
{dataIndex: 'LondonProductX', header: 'ProductX'},
{dataIndex: 'LondonProductY', header: 'ProductY'},
{dataIndex: 'ParisProductX', header: 'ProductX'},
{dataIndex: 'ParisProductY', header: 'ProductY'}
];
var cm = new Ext.ux.grid.LockingColumnModel({
columns:columns
,rows:[continentGroupRow, cityGroupRow]
});
var grid = new Ext.grid.GridPanel({
renderTo: 'column-group-grid',
title: 'Sales By Location',
width: 1000,
height: 400,
store: new Ext.data.ArrayStore({
fields: fields,
data: data
}),
cm: cm,
viewConfig: {
forceFit: true
},
view: new Ext.ux.grid.LockingGridView()
,plugins: group //添加了这行就报JS错误了
});
});
//
syncHeaderHeight : function(){}
var hrow =Ext.fly(this.innerHd).child('tr',true);
对象为空 undifined.导致后面引用该对象时候hrow.style.height = 'auto'出错。
但不加这个插件,就没有问题,但是复杂表头就不能展示了。
求高手解决!
Ext.onReady(function() {
Ext.BLANK_IMAGE_URL = 'resources/images/default/s.gif';
var structure = {
Asia: ['Beijing', 'Tokyo'],
Europe: ['Berlin', 'London', 'Paris']
},
products = ['ProductX', 'ProductY'],
fields = [],
columns = [{dataIndex: 'sss',header: 'sss'}];
data = [],
continentGroupRow = [],
cityGroupRow = [];
//构造数据
function generateConfig(){
var arr,
numProducts = products.length;
Ext.iterate(structure, function(continent, cities){
Ext.each(cities, function(city){
Ext.each(products, function(product){
fields.push({
type: 'int',
name: city + product
});
columns.push({
dataIndex: city + product,
header: product,
renderer: Ext.util.Format.usMoney
});
});
arr = [];
for(var i = 0; i < 20; ++i){
arr.push((Math.floor(Math.random()*11) + 1) * 100000);
}
data.push(arr);
});
})
}
// Run method to generate columns, fields, row grouping
generateConfig();
//构造复杂表头
continentGroupRow =[
{},
{header: 'Asia', colspan: 4, align: 'center'},
{header: 'Europe', colspan: 6, align: 'center'}
];
cityGroupRow = [
{},
{header: 'Beijing', colspan: 2, align: 'center'},
{header: 'Tokyo', colspan: 2, align: 'center'},
{header: 'Berlin', colspan: 2, align: 'center'},
{header: 'London', colspan: 2, align: 'center'},
{header: 'Paris', colspan: 2, align: 'center'}
]
//ext3.3的自带插件
var group = new Ext.ux.grid.ColumnHeaderGroup({
rows: [continentGroupRow, cityGroupRow]
});
var fields = [
{type: 'string', name: 'sss'},
{type: 'int', name: 'BeijingProductX'},
{type: 'int', name: 'BeijingProductY'},
{type: 'int', name: 'TokyoProductX'},
{type: 'int', name: 'TokyoProductY'},
{type: 'int', name: 'BerlinProductX'},
{type: 'int', name: 'BerlinProductY'},
{type: 'int', name: 'LondonProductX'},
{type: 'int', name: 'LondonProductY'},
{type: 'int', name: 'ParisProductX'},
{type: 'int', name: 'ParisProductY'}
];
//ÌíŒÓcheckbox
var sm = new Ext.grid.CheckboxSelectionModel();
sm.lock();
// columns at this point is:
var columns = [sm,
{dataIndex: 'sss', header: 'Product',locked:true},
{dataIndex: 'BeijingProductX', header: 'ProductX'},
{dataIndex: 'BeijingProductY', header: 'ProductY'},
{dataIndex: 'TokyoProductX', header: 'ProductX'},
{dataIndex: 'TokyoProductY', header: 'ProductY'},
{dataIndex: 'BerlinProductX', header: 'ProductX'},
{dataIndex: 'BerlinProductY', header: 'ProductY'},
{dataIndex: 'LondonProductX', header: 'ProductX'},
{dataIndex: 'LondonProductY', header: 'ProductY'},
{dataIndex: 'ParisProductX', header: 'ProductX'},
{dataIndex: 'ParisProductY', header: 'ProductY'}
];
var cm = new Ext.ux.grid.LockingColumnModel({
columns:columns
,rows:[continentGroupRow, cityGroupRow]
});
var grid = new Ext.grid.GridPanel({
renderTo: 'column-group-grid',
title: 'Sales By Location',
width: 1000,
height: 400,
store: new Ext.data.ArrayStore({
fields: fields,
data: data
}),
cm: cm,
viewConfig: {
forceFit: true
},
view: new Ext.ux.grid.LockingGridView()
,plugins: group //添加了这行就报JS错误了
});
});
//
syncHeaderHeight : function(){}
var hrow =Ext.fly(this.innerHd).child('tr',true);
对象为空 undifined.导致后面引用该对象时候hrow.style.height = 'auto'出错。
但不加这个插件,就没有问题,但是复杂表头就不能展示了。
求高手解决!
作者: freeman19870822 发布时间: 2011-04-11
我前阵子也被这个问题弄烦了很久,实在弄不出我想要的那种表头,没办法直接用XTemplate做的。
作者: mabin1988 发布时间: 2011-04-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28