使用带有extjs的自动完成组合框

时间:2012-11-26 09:53:09

标签: extjs extjs4

我的情况是,我有一个编辑表单,它从网格的选定行中获取数据。 在这种形式中有一些类型为“combobox”的字段,我正在使用自动完成属性:

    xtype: 'combobox',
    store: 'Paciente',
    forceSelection: true,
    typeAhead: true,
    pageSize: 10,
    fieldLabel: 'Paciente',
    name: 'paciente_id',
    valueField: 'id',
    displayField: 'nome',
    allowBlank: false,
    afterLabelTextTpl: required

这是我的商店:

Ext.define('App.store.Paciente', {
  extend: 'Ext.data.Store',
  model: 'App.model.Paciente',
  pageSize: 10,
  proxy: {
      type: 'rest',
      format: 'json',
      url: 'pacientes',
      reader: {
          root: 'pacientes',
          totalProperty: 'totalCount'
      }
  }
});

组合在使用时有效。但是当我在网格中选择一条线时,所有字段都会被填充,但不是组合。

gridSelectionChange: function(model, records) {
    if (records[0]) {
        this.getForm().load(records[0]);
    }
},

如何在加载表单时正确填充此组合?

更新1:工作代码

我必须为每个组合框手动完成此操作。我认为这是一种自动的方式..

if (records[0]) {
        this.getForm().loadRecord(records[0]);

        //updating current value for combo paciente 
        this.getStore('Paciente').add({nome: records[0].get('nome'), id: records[0].get('id')});
        this.getCombopaciente().select(records[0].get('paciente_id'));

        //updating current value for combo XYZ...
    }

1 个答案:

答案 0 :(得分:1)

默认情况下,组合仅在展开时加载商店。在您的情况下,它没有数据显示。 您可以手动调用商店加载方法或在combo配置中设置自动加载属性。