2

我有以下代码适用于除 Firefox 之外的所有浏览器:

{
    xtype: 'gridcolumn',
    dataIndex: 'action',
    flex: 1,
    text: 'Action',
    editor: new Ext.form.field.ComboBox({
        typeAhead: true,
        triggerAction: 'all',
        selectOnTab: true,
        store: [
            ['Update','Update'],
            ['Suspend','Suspend'],
            ['Cancel','Cancel']
        ],
        lazyRender: true,
        listClass: 'x-combo-list-small',
        listeners: {
            change:{
                scope: me,
                fn: me.processAction
            },
            focus: function(combo) {
                combo.expand();
            },
            collapse: function(combo) {
                //combo.setVisible(false);
            }
        }
    })
}

问题是当您单击组合框时,列表中的第一项是<div id="ext-gen1584" class="x-grid-cell-inner " style="text-align: left; ;">&nbsp;</div>.

有人遇到过这种情况么?它是 Ext 还是 Firefox 中的错误?

目前在 Firefox 18.0.2 中进行测试。

4

4 回答 4

1

我有这个错误,就像其他人说的那样,当你在模型中没有 dataIndex 的字段时会发生这种情况。但这里有一个小时刻,您必须在模型中初始化该字段,即使是空值,然后它将呈现正确。

于 2015-04-28T08:17:10.227 回答
0

是的,< 5.0 版本在 firefox 中存在错误 - 当 dataIndex 的名称无效时,编辑器的值错误。


看看例子


header: 'Relationship',
dataIndex: 'relationshipWRONG', // rename this on 'relationship'
flex: 2,
getEditor: function() {
    return Ext.create('Ext.grid.CellEditor', {
        field: Ext.create('Ext.form.field.ComboBox', {
            store: relativeStore,
            displayField: 'name',
            valueField: 'name',
            editable: false
        })
    });
}

在 chrome 和 firefox 中查看这个,在 firefox 中您会看到 dom 元素而不是 null 值。在 5 版本中一切都很好。重命名此数据索引和值将是正确的。

但是当dataIndex在datacolumn上正确时我看到了这个错误,我还没有找到如何解决它并且只是在beforestartedit事件中更改值(ofc这是不好的做法)

于 2014-10-17T13:25:44.060 回答
-1

我在网格中遇到过类似的问题,如果 dataIndex 没有值,那么单元格将显示您所看到的内容..所以请检查 dataIndex 的内容:Action;

于 2013-06-25T11:03:22.987 回答
-1

这是我今天在我的情况下发现的......

在你有的情况下

1 - 具有字段 'id'、'name'、'displayName' 的商店,在 displayName 字段上有一个组合。

响应 daixfnwpu: AND dataIndex 为每个字段设置。

2 - 要添加的记录,其中包含字段 'id'、'name' 但没有 displayName。

如果您执行 store.add(record),这似乎有效,并且 displayName 将设置为空字符串“”

但是,如果您拖放记录,则拖放操作似乎没有设置 displayName 并且它保持未定义......这是问题的根源......

我通过过滤添加的 onDrop 记录来解决这个问题...

Ext.each(records, function(record) {
    var displayName = record.get('displayName');
    record.set('displayName', displayName ? displayName : '');
    record.commit();
});
于 2014-01-23T01:55:43.277 回答