永久隐藏 Ext JS 网格的列
Permanently hide column of Ext JS grid
ExtJS 5
我正在使用 ExtJs 5 网格。我有一个按钮,当我点击它时,使用下面的行将隐藏年龄列。
Ext.getCmp('grdSample').columnManager.columns[2].setVisible(false);
我正在使用 listener - beforecellclick 只是为了获取点击列的索引。但是当我点击最后一列(最后一列 = 隐藏列旁边)时,它仍然显示列的原始索引。隐藏列仍在网格中。
In CSS - 如果我们使用 visibility: hidden 那么它会隐藏组件或标签,但在网页中仍然采用 space 但如果使用 display: none,它会隐藏为以及它在网页中不需要 space。
我希望隐藏列在获取当前点击列的索引时不应该使用 space。 (不使用 CSS)。
谁能帮我解决这个问题。
Ext.onReady(function () {
var studentStore = new Ext.data.JsonStore({
autoLoad: true,
pageSize: 10,
fields: ['Name', 'Age', 'Fee'],
data: {
items: [
{ "Name": 'Puneet', "Age": '25', "Fee": '1000' },
{ "Name": 'Ankit', "Age": '23', "Fee": '2000' },
{ "Name": 'Rahul', "Age": '24', "Fee": '3000' }
]
},
proxy: {
type: 'memory',
reader: {
type: 'json',
rootProperty: 'items'
}
}
});
var window = new Ext.Window({
id: 'grdWindow',
width: 400,
title: 'Grid Samples',
items: [
{
xtype: 'panel',
layout: 'fit',
renderTo: Ext.getBody(),
items: [
{
xtype: 'button',
text: 'hide age column',
handler: function () {
Ext.getCmp('grdSample').columnManager.columns[2].setVisible(false);
}
},
{
xtype: 'grid',
id: 'grdSample',
height: 300,
selModel: Ext.create('Ext.selection.CheckboxModel',
{
}),
store: studentStore,
columns: [
{
header: 'Name',
dataIndex: 'Name',
},
{
header: 'Age',
dataIndex: 'Age',
},
{
header: 'Fee',
dataIndex: 'Fee'
}
],
listeners:{
beforecellclick: function (el, td, cellIndex, record, tr, rowIndex, e, eOpts) {
debugger;
}
},
dockedItems:
[
{
xtype: 'pagingtoolbar',
store:studentStore,
dock:'bottom',
displayInfo:true
}
]
}
]
}
]
});
Ext.create('Ext.grid.Panel', {
store: store,
columns: [
{text: "Name", flex : 1, dataIndex: 'Name'},
{text: "Age", flex : 1, dataIndex: 'Age', id : 'colAge'},
{text: "Fee", flex : 1, dataIndex: 'Fee'}
],
listeners : {
'cellclick' : function (me, td, cellIndex, record, tr, rowIndex, e, eOpts ) {
me.panel.headerCt.getHeaderAtIndex(cellIndex).dataIndex)}} // here you get the correct value :)
});
这里正在工作 Fiddle : http://jsfiddle.net/Xpe9V/1623/
也许有点矫枉过正,但您可以创建一个列数组
var columns= [{dataIndex: 'Name', header: 'Name'}, { dataIndex:'Age', header:
'Age' }, { dataIndex:'Fee', header: 'Fee'}]
2) 然后使用javascript 拼接方法按索引从数组中删除一列
并重新配置您的网格
myGrid.reconfigure(myStore, columns);
ExtJS 5
我正在使用 ExtJs 5 网格。我有一个按钮,当我点击它时,使用下面的行将隐藏年龄列。
Ext.getCmp('grdSample').columnManager.columns[2].setVisible(false);
我正在使用 listener - beforecellclick 只是为了获取点击列的索引。但是当我点击最后一列(最后一列 = 隐藏列旁边)时,它仍然显示列的原始索引。隐藏列仍在网格中。
In CSS - 如果我们使用 visibility: hidden 那么它会隐藏组件或标签,但在网页中仍然采用 space 但如果使用 display: none,它会隐藏为以及它在网页中不需要 space。
我希望隐藏列在获取当前点击列的索引时不应该使用 space。 (不使用 CSS)。
谁能帮我解决这个问题。
Ext.onReady(function () {
var studentStore = new Ext.data.JsonStore({
autoLoad: true,
pageSize: 10,
fields: ['Name', 'Age', 'Fee'],
data: {
items: [
{ "Name": 'Puneet', "Age": '25', "Fee": '1000' },
{ "Name": 'Ankit', "Age": '23', "Fee": '2000' },
{ "Name": 'Rahul', "Age": '24', "Fee": '3000' }
]
},
proxy: {
type: 'memory',
reader: {
type: 'json',
rootProperty: 'items'
}
}
});
var window = new Ext.Window({
id: 'grdWindow',
width: 400,
title: 'Grid Samples',
items: [
{
xtype: 'panel',
layout: 'fit',
renderTo: Ext.getBody(),
items: [
{
xtype: 'button',
text: 'hide age column',
handler: function () {
Ext.getCmp('grdSample').columnManager.columns[2].setVisible(false);
}
},
{
xtype: 'grid',
id: 'grdSample',
height: 300,
selModel: Ext.create('Ext.selection.CheckboxModel',
{
}),
store: studentStore,
columns: [
{
header: 'Name',
dataIndex: 'Name',
},
{
header: 'Age',
dataIndex: 'Age',
},
{
header: 'Fee',
dataIndex: 'Fee'
}
],
listeners:{
beforecellclick: function (el, td, cellIndex, record, tr, rowIndex, e, eOpts) {
debugger;
}
},
dockedItems:
[
{
xtype: 'pagingtoolbar',
store:studentStore,
dock:'bottom',
displayInfo:true
}
]
}
]
}
]
});
Ext.create('Ext.grid.Panel', {
store: store,
columns: [
{text: "Name", flex : 1, dataIndex: 'Name'},
{text: "Age", flex : 1, dataIndex: 'Age', id : 'colAge'},
{text: "Fee", flex : 1, dataIndex: 'Fee'}
],
listeners : {
'cellclick' : function (me, td, cellIndex, record, tr, rowIndex, e, eOpts ) {
me.panel.headerCt.getHeaderAtIndex(cellIndex).dataIndex)}} // here you get the correct value :)
});
这里正在工作 Fiddle : http://jsfiddle.net/Xpe9V/1623/
也许有点矫枉过正,但您可以创建一个列数组
var columns= [{dataIndex: 'Name', header: 'Name'}, { dataIndex:'Age', header:
'Age' }, { dataIndex:'Fee', header: 'Fee'}]
2) 然后使用javascript 拼接方法按索引从数组中删除一列 并重新配置您的网格
myGrid.reconfigure(myStore, columns);