Extjs - 如何在Grid列中显示组合框

fre*_*yle 18 grid combobox extjs extjs4.1

我有一个gridpanel包括日期和组合列jsfiddle

但我不想点击显示我的组合.我希望在没有点击的情况下显示我的组合,而不是隐藏在单元格中

在此输入图像描述

和日期栏一样

在此输入图像描述

我觉得好奇clicksToEdit: 0但失败了

plugins: [
    Ext.create('Ext.grid.plugin.CellEditing', {
        clicksToEdit: 1
    })
]
Run Code Online (Sandbox Code Playgroud)

怎么做,谢谢

dbr*_*rin 8

在4.2x或更低版本中实现此目的的唯一方法是使用自定义组件,如Skirtle的组件列http://skirtlesden.com/ux/component-column此列类型将允许您将任意组件插入单元格.

即将发布的ExtJS将有一个名为Gadget Grid的东西,它将允许类似的功能.


Ben*_* E. 7

只有在单击单元格后才会注入组合框或日期选择器,在单击之前它们根本不存在于网格中.更改单元格外观的方法是使用列上的渲染器.这样你可以添加一个假的触发器作为背景图像或类似的东西.

在回复您的评论时,您可以通过以下方式进行操作:

{
    xtype: 'gridcolumn',
    renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
        metaData.tdCls = 'fake-combo';

        return value;
    },
    text: 'MyColumn8',
    editor: {
        xtype: 'combobox',
        store: ...
    }
}
Run Code Online (Sandbox Code Playgroud)

研究所有渲染器选项的文档.您可以指定不同的类以及DomHelper将使用的属性.css类可以有背景图像,但你必须在这里进行实验.使用您想要的内容获得一致的布局并不容易,但您可以完全访问呈现在单元格中的div.确保使用Firebug或Chrome Dev Tools检查结果,它会准确显示发生的情况.

虽然您可以截图组合框并将其设置为背景图像.但最好不要尝试在渲染器中创建组合框,这不是它的工作原理.每行都有一个真正的组合框是自定义的,如果你有很多行,可能会影响性能.


小智 6

var grid = Ext.create('Ext.grid.Panel', {
    store: store,
    columns: [{
        header: 'Category',
        dataIndex: 'CategoryName',
        editor: {
            xtype: 'combobox',
            store: 'categoryStore',
            displayField: 'CategoryName',
            valueField: 'CategoryID'
        }
    }],
    width: 450,
    renderTo: Ext.getElementById('hede')
});
Run Code Online (Sandbox Code Playgroud)