extjs - 将网格列的宽度设置得足够宽,以便在其中显示文本

时间:2011-03-24 22:34:37

标签: extjs grid

我在extjs中动态加载网格。正如您在下面看到的,“已创建”列不够宽,无法在其中显示整个文本。我想设置每列的宽度,以便完全显示其文本。

enter image description here

这可能吗?有什么建议吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在列配置中使用参数width: ...。就这么简单。我没有看到你的代码,所以我猜。

然而,看起来你有更多的垂直空间 - >也许2个行中的中断日期(使用模板)将是解决方案,或者您可以为具有较小字母的单元格设置特殊的css类以便适合。

修改 在你的情况下,它可能是ColumnModel中的defaultWith的组合(至少得到120以适合你的日期,如果更多列网格将调整)和setColumnWith()动态地基于数据长度和列数 - 逻辑由你决定

答案 1 :(得分:0)

谢谢bensiu,我实现了登录。但是,我不能说这是理想的解决方案,但它解决了我的目的。

首先,我浏览数据并找到该列中最长的字符串(包括该列的标题名称)。

// Store the longest string for each column in columns[col].maxstring 

// Define a hidden label
{
    xtype: 'label',
    id: 'lblTab',
    hidden: true
}

var lblTab = Ext.getCmp('lblTab');
var hiddenField = Ext.util.TextMetrics.createInstance(Ext.getCmp('lblTab').el);
var widthValue = 0;

// Iterate through each columns to set its maximum width
for(var col in columns) {
    // find width of string
    widthValue = hiddenField.getWidth(columns[col].maxstring);

    // set column width
    colModel.setColumnWidth(columns[col].index, widthValue + 20, false);  
}

我希望这有助于某人。