javascript - 应用 flex 时如何在 ExtJS 4 中使用 grid.columns[index].setWidth(width) 调整列的大小?

标签 javascript extjs extjs4 extjs4.2 extjs-mvc

强调文本panel.Grid 中的列宽度使用 width 属性设置时,列的大小由 grid.columns[ index].setWidth(width) 正常工作。但是当列的宽度由 flex 设置时,此代码不起作用。

只是说清楚:我正在尝试同步两个网格上的列调整大小/移动/隐藏/等事件。

因此两个网格具有基本相同的列:

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 有效 https://fiddle.sencha.com/#fiddle/4b4

我的例子切换了 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();
    }              
});

关于javascript - 应用 flex 时如何在 ExtJS 4 中使用 grid.columns[index].setWidth(width) 调整列的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22484174/

相关文章:

extjs - 突出显示网格项目选择上的行和单元格

extjs - ExtJS 4 中的 ID 与相对路径

javascript - 如何修复此 JavaScript 函数?

javascript - 后退按钮重写以重定向回新位置

javascript - 在 View 中减去 new Date() 中的天数

javascript - 按钮文本对齐中的 iconCls - EXTJS

javascript - Extjs 4 在父窗口关闭时保存 checkboxGroup 的状态

javascript - 是否可以通过 CSS 或 JavaScript 在 Android 浏览器上抑制 "Long Hold"(又名 "long press")弹出对话框

javascript - 如何更改js中已由php设置的cookie?

javascript - Sencha 触摸 : Problem loading form: Cannot read property "OffsetBoundary of undefined"