ExtJSGridPanel表格文本垂直居中通过监听数据加载事件实现:在事件回调中遍历所有td元素,统一设置CSS样式text-align:center、line-height:130px和vertical-align:center。由于GridPanel数据加载后DOM会刷新,监听事件可在每次加载后重新应用样式,确保垂直居中效果持续。line-height
ExtJs GridPanel表格文本垂直居中设置示例
作者:技术拾光
时间:2026-06-10
浏览:619
文章目录
GridPanel配置代码
复制代码 代码如下:
{
xtype : 'grid',
id : 'grid_jglb',
frame : true,
region : 'center',
title : '列表详细信息',
columnLines : true,
loadMask : true,
store : 'test_store',
viewConfig : {
forceFit : true,
scrollOffset : 0
},
anchor : '100%',
selModel : new Ext.grid.CheckboxSelectionModel({
moveEditorOnEnter : false,
width : 28
}),
columns : [{
xtype : 'gridcolumn',
id : 'gridcolumn_id',
align : 'center',
dataIndex : 'COLUMN1',
editable : false,
header : '列名1',
sortable : true,
width : 100
}, {
xtype : 'gridcolumn',
align : 'center',
dataIndex : 'COLUMN2',
editable : false,
header : '列名2',
sortable : true,
width : 100
}, {
xtype : 'gridcolumn',
align : 'center',
dataIndex : 'COLUMN3',
editable : false,
header : '列名3',
sortable : true,
width : 100
}, {
xtype : 'gridcolumn',
align : 'center',
dataIndex : 'COLUMN4',
id : 'colidx1',
editable : false,
header : '列名4',
sortable : true,
width : 100
}, {
xtype : 'gridcolumn',
align : 'center',
dataIndex : 'COLUMN5',
hidden : true,
sortable : true
}],
bbar : {
xtype : 'paging',
autoShow : true,
displayInfo : true,
pageSize : 10,
store : 'test_store'
},
tbar : [{
text : '新增',
iconCls : 'icon-add',
id : 'btn_mxxz'
}, '-', {
text : '修改',
iconCls : 'icon-edit',
id : 'btn_mxxg'
}, '-', {
text : '删除',
iconCls : 'icon-delete',
id : 'btn_mxsc'
}]
}
JsonStore的细节这里不再赘述,直接进入正题——如何实现垂直居中。
实现思路
实现思路非常直接:通过操作DOM节点,获取表格中所有的TD元素,然后为需要居中的TD统一设置样式。具体样式值为 'text-align:center;line-height:130px;vertical-align:center;'。之所以能这样做,需要了解Ext的渲染机制:GridPanel最终会被渲染成一个包含DIV的页面结构,每一行数据(例如"测试项,0,20"这一行)实际上被包裹在一个DIV内部的table中。只要掌握Ext的生成规则,定位到这个table,然后操作它的td元素即可。
具体实现代码
复制代码 代码如下:
Ext.getCmp("grid_jglb").getStore().on('load',setTdCls);//设置表格加载数据完毕后,更改表格TD样式为垂直居中
function setTdCls(){
var gridJglb=document.getElementById("grid_jglb");
var tables = gridJglb.getElementsByTagName("table");//找到每个表格
for(var k = 0; k < tables.length; k++){
var tableV=tables[k];
if(tableV.className=="x-grid3-row-table"){
var trs=tables[k].getElementsByTagName("tr");//找到每个tr
for(var i = 0;i < trs.length;i++){
var tds=trs[i].getElementsByTagName("td");//找到每个TD
for(var j = 1;j
核心逻辑是使用 getStore().on('load') 监听表格数据加载完成事件,然后遍历所有行和所有TD,逐个写入样式。注意循环从 j=1 开始,跳过了第一列(通常为复选框列),这一细节在实际项目中非常实用。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章