ExtJS RowEditor на сетке - PullRequest
       26

ExtJS RowEditor на сетке

0 голосов
/ 31 марта 2010

Когда мои пользователи редактируют сетку через комбо-записи RowEditor, а флажки раздражают

1 яблоко 2 оранжевый 3 груши

Например, с помощью комбо выше пользователь выберет Orange, а затем обновит - теперь в Grid вместо того, чтобы говорить, что оранжевое будет отображать число 2. Я бы хотел, чтобы оно отображалось оранжевым, когда было выполнено успешное редактирование.

код для моей комбо

     editor : {
       allowBlank     : false,
       displayField   : 'team',
       editable       : false,
       emptyText      : 'Select Team',
       forceSelection : true,
       lazyRender     : true,
       mode           : 'remote',
       name           : 'team',
       store          : storeTeam,
       triggerAction  : 'all',
       valueField     : 'id',
       xtype          : 'combo'
     }

Я думаю, что я прочитал, что вы можете отправить всю строку обратно для вставки, или я должен прослушать обновление сетки, а затем изменить поле, но мне нужно несколько советов о том, что лучше

Приветствия

Ответы [ 2 ]

1 голос
/ 15 июня 2010

Попробуйте код ниже. Используйте этот столбец так же, как и любой другой столбец сетки ExtJS.

Ext.grid.FixedListColumn = Ext.extend(Ext.grid.Column, {
  constructor: function(cfg){
    cfg.editor = new Ext.form.ComboBox(cfg.editor);
    Ext.grid.ComboBoxColumn.superclass.constructor.call(this, cfg);
    this.renderer = Ext.util.Format.comboRenderer(cfg.editor);
  }
});

Ext.grid.Column.types.fixedlistcolumn = Ext.grid.FixedListColumn;

// Takes in a combobox and returns a renderer that looks up the displayField in
// the store attached to the combo
Ext.util.Format.comboRenderer = function(combo){
    return function(value){
        var record = combo.findRecord(combo.valueField, value);
        return record ? record.get(combo.displayField) : combo.valueNotFoundText;
    }
}

// Use this as the 'columns' parameter when creating your Grid
var grid_columns = [
  {xtype:'fixedlistcolumn',
   store: [[1,'Apple'],[2,'Orange']]},
   ...
];
0 голосов
/ 04 мая 2010

Надеюсь, это поможет ...

Вы можете добавить определение рендерера в столбец вашей команды:

Ниже приведен пример того, как простые значения true / false представляются как Да / Нет вGridPanel:

renderer:function(val){
                if(val=="true" || val == true) {
                    return "Yes";
                }
                else{
                    return "No";
                }
            }
...