Ext.form.field.ComboBox在Firefox中显示HTML

时间:2013-02-14 23:04:05

标签: extjs

我有以下代码适用于除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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

是的,&lt; 5.0版本在firefox中有bug - 当dataIndex名称无效时,编辑器输入错误的值。


Just look example


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 verion一切都很好。 重命名此数据索引并且值将是正确的。

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

答案 2 :(得分:-1)

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

答案 3 :(得分:-1)

这就是我今天在我的案例中想到的......

在你有

的情况下

1 - 包含字段'id','name','displayName'以及displayName字段组合的商店。

  

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

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

如果你做了store.add(记录),这似乎工作,displayName将被设置为空字符串“”

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

我通过过滤添加的记录onDrop ...

来解决这个问题
Ext.each(records, function(record) {
    var displayName = record.get('displayName');
    record.set('displayName', displayName ? displayName : '');
    record.commit();
});