Javascript 当应用flex时,如何在ExtJS 4中使用grid.columns[index].setWidth(width)调整列的大小?
强调文本当使用Javascript 当应用flex时,如何在ExtJS 4中使用grid.columns[index].setWidth(width)调整列的大小?,javascript,extjs,extjs4,extjs4.2,extjs-mvc,Javascript,Extjs,Extjs4,Extjs4.2,Extjs Mvc,强调文本当使用width属性通过Grid.columns[index].setWidth(width)设置panel.Grid中的列宽度时,其工作方式应为。但是当列的宽度由flex设置时,此代码不起作用 只是想说明一下:我正在尝试同步两个网格上的列resize/move/hide/etc事件 因此,两个轴网的柱基本相同: me.columns = { defaults: { renderer: tooltipRenderer },
width
属性通过Grid.columns[index].setWidth(width)
设置panel.Grid
中的列宽度时,其工作方式应为。但是当列的宽度由flex
设置时,此代码不起作用
只是想说明一下:我正在尝试同步两个网格上的列resize/move/hide/etc事件
因此,两个轴网的柱基本相同:
me.columns = {
defaults: {
renderer: tooltipRenderer
},
items: [
{
header: "product",
dataIndex: 'product',
groupable: false,
flex: 1
},
{
header:'Value',
dataIndex: 'vlue',
align: 'right',
renderer: Ext.util.Format.numberRenderer('0,000.00'),
summaryType: 'remote',
summaryRenderer: Ext.util.Format.numberRenderer('0,000.00'),
groupable: false,
flex: 1
}
]
};
插件中同步列大小的代码:
firstGrid.on('columnresize', function (ct, column, width) {
console.log('fgrid: ' + width + ' column name: ' + column.dataIndex);
secondGrid.columns[column.getIndex()].setWidth(width);
}, firstGrid);
secondGrid.on('columnresize', function (ct, column, width) {
console.log('sGrid: ' + width + ' column name: ' + column.dataIndex);
firstGrid.columns[column.getIndex()].setWidth(width);
}, secondGrid);
所以,我现在拥有的是:当我在一个网格中用flex
设置的宽度调整列的大小时,对应于另一个网格的列不会改变它的宽度,但是如果在一个网格中调整列的大小后,我从另一个网格中调整列的大小,一切都会正常工作。
我希望这个描述不要太奇怪。如果某个内容的宽度由布局管理,则不应该在该内容上设置宽度。如果删除列的
flex
属性,则setWidth
有效
我的示例切换flex属性,以便您可以设置宽度,尝试单击页面,您将看到flexed列更改宽度
// Assume you have a variable gridwhere the second column is flexed.
Ext.getBody().on('click', function() {
var emailCol = grid.query('gridcolumn')[1];
if (emailCol.flex) {
delete emailCol.flex;
emailCol.setWidth(100);
} else {
emailCol.flex = 1;
grid.doLayout();
}
});
有我们可以玩的代码吗?我可以知道你在问什么,并且有一些想法,但是如果我必须自己编写启动(中断)代码,我就不能花时间。当然可以。我将在五分钟后发布。不幸的是,我必须保存flex状态,因为列的宽度之和必须是常量。因此,我似乎不得不放弃同步列大小调整的想法。@edthehead如果必须保存flex状态,则不能在框布局中组合宽度和flex。您可以尝试计算正确的伸缩量,使其以所需的宽度显示。