[ExtJS] GridPanel 列自适应内容宽度

[ExtJS] GridPanel 列自适应[b]内容[/b]宽度
------------------


1

[img]http://dl.iteye.com/upload/attachment/0072/1498/02a16ecd-0fd2-3455-b941-bd47765a755f.png[/img]

gridpanel beforerender

'beforerender' :function(view) {
var gridcolumns = view.headerCt.getGridColumns();
view.store.on('load', function(store, records) {
Ext.each(gridcolumns, function(gridcolumn, colIdx) {
var dataIndex = gridcolumn.dataIndex;
var maxLength = 0;
Ext.each(records, function(record, rowIdx) {
var tmp = record.get(dataIndex) + '';
if (tmp.length > maxLength) {
maxLength = tmp.length;
}
/** 若是 wrap 单元格, 换行处理, 尽量避免水平滚动条 */
if (Ext.isDefined(gridcolumn.wrap)) {
var gridview = view.getView();
var row = gridview.all.elements[rowIdx];
var cell = row.cells[colIdx + 1];
var cellDiv = cell.childNodes[0];
cellDiv.style['white-space'] = 'normal';
cellDiv.style['overflow'] = 'visible';
}
});
/** 若是标题长度大于内容长度, 取标题长度, 标题长度为中文字符 */
if (gridcolumn.text.length > maxLength) {
maxLength = gridcolumn.text.length;
gridcolumn.woc = true;
}

/** 隐藏, ActionColumn, wrap 列, flex列 不再计算. */
/** 长度计算需要加上 22 的菜单长度. 英文默认7, 中文默认 12 */
if (!gridcolumn.hidden && !(gridcolumn instanceof Ext.grid.column.Action) && !Ext.isDefined(gridcolumn.wrap) && !Ext.isDefined(gridcolumn.flex)) {
if(Ext.isDefined(gridcolumn.woc)) {
gridcolumn.minWidth = gridcolumn.width = maxLength * 12 + 22;
} else {
gridcolumn.minWidth = gridcolumn.width = maxLength * 7 + 22;
}
};
});

/** 重新布局 gridpanel 组件*/
view.doLayout();
});
}



2


var grid = Ext.create('Ext.grid.Panel', {
store : Ext.getStore('userStore'),
autoShow : true,
selType : 'rowmodel',
loadMask: true,
selModel : Ext.create('Ext.selection.CheckboxModel', {
listeners : {
selectionchange : function(sm, selections) {
grid.down('#removeButton')
.setDisabled(selections.length == 0);
}
}
}),
columns : [{
header : '用户ID',
dataIndex : 'userId'
}, {
header : '用户名称',
dataIndex : 'userName',
woc : true
}, {
header : '用户性别',
dataIndex : 'sex',
woc : true
}, {
header : '用户年龄',
dataIndex : 'age'
}, {
header : '用户邮箱',
dataIndex : 'email'
}, {
header : '手机号码',
dataIndex : 'phone'
}, {
header : '用户地址',
dataIndex : 'address',
wrap : true,
flex : 1,
woc : true
}, {
header : '公司名称',
dataIndex : 'company',
woc : true
}, {
header : '用户职务',
dataIndex : 'duty',
woc : true
}, {
header : '备注',
dataIndex : 'note',
woc : true
}, {
xtype : 'actioncolumn',
draggable : false,
header : '操作',
width : 50,
items : [{
icon: 'extjs/examples/shared/icons/fam/cog_edit.png',
tooltip : '应用',
handler : function(grid, rowIndex, colIndex) {

}
}]
}],
dockedItems : [{
xtype : 'toolbar',
items : [{
text : '添加',
itemId : 'addButton',
iconCls : 'add',
action : 'add'
}, '-', {
itemId : 'removeButton',
text : '删除',
iconCls : 'remove',
disabled : true,
action : 'remove'
}, '-']
}]
});




3
woc : width of single chinese character , default 12.

wrap : 溢出则换行.

flex : 自动填充列
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值