Welcome 微信登录

首页 / 脚本样式 / JavaScript / ExtJs设置GridPanel表格文本垂直居中示例

业务场景,需要实现最终效果图如下:
 
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的 cssText的值为:"text-align:center;lineheight: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<tds.length;j++){
tds[j].style.cssText="width:202px;text-align:center;line-height:130px;vertical-align:center;";
}
}
};
}
}