繁体   English   中英

设置组合框宽度以自动调整它在ExtJS中的最长字段选项文本

[英]set combo box width to auto fit it's longest field option text in ExtJS

如何设置组合框宽度以自动适应它最长的字段选项文本?

说,我有宽度为300的组合框字段。但是如果从该组合中有一个字段选项有一些长文本 - 大于300px。

我想让我的组合框宽度自动适合那个长字段选项,以便在没有任何剪切的情况下在Combo中查看整个选定的字段选项。

实际上,我忘了有配置在extjs中为组合做同样的事情。

我认为在ExtJS 4中,组合宽度被设置为自动适合最长字段选项。

我不想通过动态添加代码来自动调整大小来实现它。

无需添加任何手动代码..不要给宽度..

成长:真的,
growToLongestValue:true

在ExtJS 6中为我工作..

Ext.create('Ext.form.ComboBox', {
       fieldLabel : 'Field',
       store : ['a', 'b', 'c', 'Long long long long long long long long'],
       grow : true,
       growToLongestValue : true,
       renderTo : Ext.getBody()
});

检查Sencha Fiddle https://fiddle.sencha.com/#fiddle/12jc

你必须手动完成; 它在Ext代码中不可用。 像这样的东西:

listeners: {
    afterrender: function(box) {
        var width = 0,
           metrics = new Ext.util.TextMetrics();
        box.getStore().each(function(rec) {
            var recWidth = textMetrics.getWidth(rec.get(box.displayField));
            width = Math.max(width,recWidth);
        });
        box.setWidth(width);
    }
}

没有任何测试或保修,但您应该知道如何解决它。

可以在文档中找到如何使用TextMetrics的详细示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM