【问题标题】:ExtJS 6-- Add textfield control into dynamic grid column headerExtJS 6--将文本字段控件添加到动态网格列标题中
【发布时间】:2019-10-25 21:02:46
【问题描述】:

我正在尝试将文本字段(或组合框)添加到动态网格的列标题中。

有一些建议使用“items”属性来解决这个问题,如下例所示(live example 中的第 81 行):

   ...
        text: 'Email',
        flex: 1,
        menuDisabled: true,
        sortable: false,
        dataIndex: 'email',
        items: [{
            xtype: 'textfield',
            labelWidth: 40,
            flex: 1,
            fieldLabel: 'Email'
        }]
   ...

它基本上可以工作,但是有几个我自己无法解决的布局问题:

  1. 文本字段控件出现在列标题下方(需要水平项目对齐);
  2. 列头高度过大(必须正常);

这是我想要得到的picture。

此外,还有一个现场 example 正在处理提到的问题。

有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: extjs header grid components


    【解决方案1】:

    你就在那里,这是我所做的代码更改。

    function getColumnConfigs() {
    return [{
        text: 'Name',
        dataIndex: 'name',
        flex: 1
    }, {
        text: '',
        flex: 1,
        menuDisabled: true,
        sortable: false,
        dataIndex: 'email',
        items: [{
            xtype: 'combobox',
            store: ages,
            valueField: 'age',
            displayField: 'age',
            labelWidth: 40,
            padding: '0 0 0 10',
            flex: 1,
            fieldLabel: 'Age'
        }]
    }]
    

    代码删除了您的文本属性,因此它不显示列标题。向组合框中添加了填充以向右移动标签。我添加了组合框而不是文本字段。

    还有一个fiddle。

    【讨论】:

    • 感谢您的回复!它看起来几乎是我正在寻找的东西,但有一个重要问题。空的列标题占位符 (text: '') 仍然存在,并且在鼠标悬停时可见。是否可以从列标题中完全删除(或隐藏)?
    • 即列标题上的鼠标悬停事件。所以我不知道有什么方法或为什么你会关心这个动作。就个人而言,我希望他们能够按年龄排序。也许通过自定义覆盖它可能会完成。
    • 部分标题突出显示至少看起来很奇怪。因此,最好完全隐藏它。我已经覆盖了dataIndex: 'email' 下的hoverCls: '' 属性以禁用鼠标悬停效果。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-07-17
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2014-03-05
    相关资源
    最近更新 更多