1

我有一个要求,列必须是网格内的组合框。

第一种方式 进入物品——

items :[{width : 500,
        margin : '5 5 5 5',
        xtype : 'gridpanel',
        store :'some_store_name',
        sortableColumns : false,
        selType : 'cellmodel',
        plugins : [ {
                ptype : 'cellediting',
            clicksToEdit : 1
            } ],
        columns : [ {
                text : '<b>Column_one</b>',
                dataIndex : 'index_one',
                flex : 1
                },
                       {text : '<b>choose a value</b>',
                dataIndex : 'index_two',
                flex : 1,
                editor : {
                    xtype : 'combobox',
                    store : 'some_store_name',
                    queryMode : 'local',
                    displayField : 'label',
                    valueField : 'label'
                    }}]}]

这以正确的方式工作。唯一的问题是,用户必须单击网格才能知道它是一个组合框。我应该使用 CSS 并设置一个属性来说明网格内的这个特定列应该像一个组合吗?还有其他方法吗?

第二种方式 不使用插件编辑器,我们可以使用渲染器函数并返回由商店填充的组合框的 xtype。如果我在一个网格中有 3 列并且要求说这个组合应该在第二列中,那么就有一个错误。当我单击组合时,选择一个值并移至第三列以更改文本或输入/编辑类型(文本框或某些组件)的列,组合框值消失。为什么会这样?

     { dataIndex : 'values', text : '<b>Status</b>',   xtype : 'componentcolumn',
  flex : 2,renderer : function(value) {return { name : 'some_name',store : 'some_store',    value : value,xtype : 'combobox',displayField : 'y',valueField : 'x',   queryMode : 'local'};}}}

欢迎任何建议。谢谢你 !

4

1 回答 1

1

使用第一种方法是正确的。如果您希望该列也显示为可编辑,请参阅我对这个 SO 问题的回答: 如何在 extjs 网格中将完整列显示为可编辑(单元格编辑)?

The reason why the second approach is not working is that the combobox is not in anyway tied to the record data that it should be updating. On initial render you are setting the default value of the box with records value through the renderer, but when someone goes to edit that value, there is nothing to say: "Hey update the record with this value also." Since there is no defined binding between the record and combobox, the combobox doesn't actually tell the record the new value, and therefore when the grid goes to display the value from the record again, there is no updated value to display.

于 2013-09-30T20:21:14.257 回答