[ExtJS] GridPanel 列自适应
内容宽度
------------------
1
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 : 自动填充列
- 大小: 27.9 KB
分享到:
相关推荐
这篇博客"EXTJS_GridPanel_ColumnModel_列的宽度随数据变化而变化"探讨了如何使GridPanel的列宽根据数据内容自动调整,以确保最佳的用户界面体验。 在EXTJS中,ColumnModel允许我们定义每列的标题、数据字段、宽度...
GridPanel由Store(数据存储)和ColumnModel(列模型)组成,它们定义了数据源和显示样式。在创建GridPanel时,我们需要配置这两个部分,例如: ```javascript var store = Ext.create('Ext.data.Store', { fields...
在给定的"ExtJs GridPanel延时加载.rar"文件中,主要涉及的核心概念是ExtJs中的GridPanel组件以及延时加载技术。GridPanel是ExtJs中一个非常重要的组件,它用于展示表格数据,而延时加载则是一种优化大量数据处理的...
在EXTJS中,GridPanel是一种常用的组件,用于展示表格数据。在实际应用中,我们经常需要在GridPanel底部显示一行“合计”行,以便对某一列或多列的数据进行求和或其他统计操作。这篇博文“给Extjs的GridPanel增加...
在使用ExtJS开发Web应用程序时,经常会遇到在GridPanel中数据列过多,导致横向滚动条自动出现的问题。这个问题主要是由于GridPanel的宽度不足以容纳所有的列宽,因此浏览器会自动显示横向滚动条以便用户查看全部数据...
- `ColumnModel`定义了`GridPanel`中的列配置,包括每列的标题、宽度、排序属性等。它是`GridPanel`展示数据的关键配置对象。 5. **PagingToolbar** - `PagingToolbar`用于实现分页功能。它可以根据指定的`Store`...
ExtJS的GridPanel导出excel文件,方便快捷易懂!
ExtJS Grid是一个强大的数据展示组件,它允许用户以表格的形式查看和操作大量数据。在实际应用中,数据过滤是常见的需求,以便用户能快速定位到感兴趣的信息。本篇将深入探讨ExtJS Grid的过滤操作,以及如何动态地对...
### 通过Servlet让Extjs GridPanel显示数据库数据 在现代Web开发中,将数据库中的数据动态展示在前端界面上是一项常见的需求。本文档主要介绍如何通过Servlet技术配合Extjs框架中的GridPanel组件来实现这一功能。 ...
ExtJS GridPanel是Sencha ExtJS框架中的一个核心组件,用于创建数据网格,展示大量结构化数据。在本文中,我们将深入探讨GridPanel的操作,包括其功能、配置选项以及如何扩展GridPanel以满足复杂需求。 首先,...
后来公司让改变一个Gridpanel的展现方式,要求实现滚屏的效果。于是我就开始找API相关的功能了。找了很久,也没有找到框架的相应控制方法,然后在网上找了很久,也没有找到有人给去示例,无奈就只能自己写JS来控制...
ExtJS锁定列头源码 ExtJS锁定列头源码
3. **Columns**: 表示表格列的配置,定义每列的显示内容、宽度、排序等属性。 4. **ViewConfig**: 配置表格的视图样式,如行高、字体大小、行选择等。 5. **Plugins**: 可选的增强功能,如分页、排序、过滤等。 ...
NULL 博文链接:https://xiaohewoai.iteye.com/blog/409898
ExtJS GridPanel 单元格无法复制问题解决方案 ExtJS 是一个功能强大的 JavaScript 框架,广泛应用于 Web 开发中。但是,在使用 ExtJS 的 GridPanel 组件时,可能会遇到单元格无法选中复制的问题,特别是在 IE ...
3. 创建列模型(ColumnModel):定义GridPanel的列,包括列的标题、数据字段绑定、宽度等,例如`Ext.grid.ColumnModel`。 4. 实例化GridPanel:配置GridPanel的各种属性,如高度、宽度、是否可拖动列等,然后将...
ExtJs GridPanel是ExtJs框架中用于展示和管理表格数据的一个重要组件,它提供了丰富的API接口,方便开发者实现复杂的数据操作。根据给出的文件信息,这里将详细解读在ExtJs GridPanel中如何实现基本的增加、删除和...
如果不设定具体宽度,列会根据内容自动调整大小。 例如,假设你有一个form表单需要设计成两列,左边一列放置用户名和密码输入框,右边一列放置注册和登录按钮,可以这样编写代码: ```javascript var formPanel = ...
2. 创建GridPanel:定义Grid的数据模型,设置列配置,添加行操作和列筛选。 3. 数据绑定:通过store将TreePanel和GridPanel连接起来,使得选择树节点可以动态改变Grid的数据。 4. 事件监听:添加事件监听器来响应...