Ext.grid.ColumnModel详解
一, 用数组的方式配置ColumnModel
var colModel = new Ext.grid.ColumnModel([
{ header:'编号', dataIndex:'id',width:200},
{ header:'名称', dataIndex:'name',width:300}
]};
注意:上述写法ColumnModel的构造参数必须是一个数组,哪怕只有一列。
二、 用JSON对象的方式配置ColumnModel
var colModel = new Ext.grid.ColumnModel({
columns:[ --列集合的定义
{ header:'编号', dataIndex:'id',width:200},
{ header:'名称', dataIndex:'name',width:300}
],
defaults:{ --公共属性配置
sortable:true,
menuDisabled:true,
width:100
},
listeners:{ --监听事件
"widthchange":function(cm,colIndx,width){
saveConfig(colIndex,width);
}
}
});
三、常用属性介绍:
header 设置列标题
dataIndex 设置列对应数据源的name值
editor 设置在编辑状态下,指定编辑器
align 设置列标题的对齐方式
widht 设置列的宽度
css 设置列头的CSS样式
fixed 表示列头的宽度是否可以改变,默认为true
hidden 表示是否是隐藏列,默认为false
hideable 表示是否禁止用户隐藏该列,默认为false
menuDisabled 表示是否禁止列菜单 默认为false
resizable 表示是否禁止列可变大小,默认为false
sortable 表示列是否可排序,默认为false
tooltip 表示列头部显示的提示文字
renderer 用于加工单元格的原始数据,
id 列的标识,列的所有单元格包括头部都是用这个值来创建CSS的class属性
格式为:
x-grid3-td-id 单元格样式
x-grid3-td-hd-id 列头样式
四、常用方法介绍:
findColumnIndex 根据dataIndex里的值,返回列的索引
getColumnById 返回指定ID的列
getColumnCount 返回列数
getColumnId 返回指定index列的ID
....
该类有很多方法来操作列,具体查看API
五、一个比较完整的实例
Ext.grid.ColumnModel([{
id: 列的唯一标识,可以用于定义css,如:(.x-grid-td-topic b { color:#333 })
header: 列的名称
dataIndex: 在store中本列值的索引
sortable: 设置本列是否支持排序
renderer: 列值的渲染函数,定义函数如:function renderName(value, cellmeta, record, rowIndex, columnIndex, store){}
width : 列宽
hidden:true 是否隐藏本列
}]);
//value是当前单元格的值
//cellmeta里保存的是cellId单元格id,id不知道是干啥的,似乎是列号,css是这个单元格的css样式。
//record是这行的所有数据,你想要什么,record.data["id"]这样就获得了。
//rowIndex是行号,不是从头往下数的意思,而是计算了分页以后的结果。
//columnIndex列号太简单了。
//store,这个厉害,实际上这个是你构造表格时候传递的ds,也就是说表格里所有的数据,你都可以随便调用。
function renderDescn(value, cellmeta, record, rowIndex, columnIndex, store) {
var str = "<input type='button' value='查看详细信息' onclick='alert(""" +
"这个单元格的值是:" + value + "" +
"这个单元格的配置是:{cellId:" + cellmeta.cellId + ",id:" + cellmeta.id + ",css:" + cellmeta.css + "}""n" +
"这个单元格对应行的record是:" + record + ",一行的数据都在里边" +
"这是第" + rowIndex + "行" +
"这是第" + columnIndex + "列" +
"这个表格对应的Ext.data.Store在这里:" + store + ",随便用吧。" +
""")'>";
return str;