可编辑网格中的ComboBox:无法看到该值

时间:2011-02-27 13:28:20

标签: extjs

我有一个使用商店的可编辑网格。我想在其中一个字段中插入一个组合框。 这是我的网格商店:

new Ext.data.Store({  ....
 proxy: new Ext.data.HttpProxy......
 reader: new Ext.data.JsonReader({   
            root: 'rows',
            fields: [..... {name:'wid', mapping: 'wid'},

还有另一个仅用于组合框的商店,它有'wid'和'name'字段。 在我的专栏模型中:

 header: 'Worker',
    dataIndex: 'wid',
    editor: new Ext.grid.GridEditor(workerCmb),
    renderer:function(value, p, record){
    return record.data['name'];}

和组合本身:

  valueField: 'wid',
            displayField: 'name',

当网格加载时,其字段“Worker”为空(没关系),但其中没有组合框。当我开始编辑它时,我看到所有列表。编辑完成后,“id”会保存到商店,但不会显示“名称”,组合框也不会显示。 我做错了什么?

2 个答案:

答案 0 :(得分:2)

这有助于:

  Ext.util.Format.comboRenderer = function(combo){
    return function(value){
        var record = combo.findRecord(combo.valueField || combo.displayField, value);
        return record ? record.get(combo.displayField) : combo.valueNotFoundText;
    }
}

答案 1 :(得分:1)

如果在组合框中启用过滤('queryMode = local'),请记住,您输入的每个字母都会应用于商店。因此,函数findRecord将无法找到过滤掉的显示名称。这将影响您在同一网格中的其他行,因为在您完成编辑后,整个网格视图将刷新。

为了确保在循环启动时没有丢失任何记录,请在尝试查找记录之前从组合框存储中删除过滤器。

Ext.util.Format.comboRenderer = function(combo){
    return function(value){
        combo.store.clearFilter(); // -> addition
        var record = combo.findRecord(combo.valueField || combo.displayField, value);
        return record ? record.get(combo.displayField) : combo.valueNotFoundText;
    }
}