2015-06-15 52 views
0

我想在表單面板上更新少數組合(使用遠程json存儲)。 當我簡單地點擊組合(加載表單數據之前),它運行良好,加載和顯示有效的項目。 但是,當我做MyForm.getForm()。加載(...)組合項目更改爲「2」。這是ID,但不是價值。Extjs 4.2.1:如何更改表單加載的遠程組合

請幫助我,如何正確地更新此類組合並顯示帶有特定ID的值,該值來自json?

型號:

Ext.define('OwnerUserModel', { 
     extend: 'Ext.data.Model', 
     fields: [ 
      { name: 'id', type: 'int' }, 
      { name: 'VarName', type: 'string' } 
     ] 
    }); 

商店:

var OwnerUserStore = Ext.create('Ext.data.Store', { 
     model : 'OwnerUserModel', 
     autoSync: true, 
     proxy: { 
      type: 'ajax', 
      url : 'http://localhost/1/Super.php?Action=GetObjectFormParams&GetAgents=1', 
      reader: 'json' 
     }, 
     autoLoad: true 
    }); 

形成鑲板與組合項目:

var MyForm = Ext.create('Ext.form.Panel', { 
     header: false, 
     title: 'My super Form', 
     //height: 300, 
     url: 'Super.php', 
     //width: 1100, 
     bodyPadding: 10, 
     defaultType: 'textfield', 
     items: [ 
      ... 
      { 
      fieldLabel : 'Agent', 
       allowBlank : false, 
       name  : 'OwnerUserId', 
       id   : 'OwnerUserId', 
       queryParam : 'GetAgents', 
       displayField: 'VarName', 
       valueField : 'id', 
       xtype  : 'combo', 
       store  : OwnerUserStore, 
       tpl: Ext.create('Ext.XTemplate', 
        '<tpl for=".">', 
        '<div class="x-boundlist-item">{VarName}</div>', 
        '</tpl>' 
       ), 
       width: 353, 
       padding: '0 0 0 30', 
       editable: false 
      } 
上存儲加載

的Json回覆:

[{"id":"1","VarName":"89031230000 user1 phone"},{"id":"2","VarName":"89161200000 user2 phone" 
}] 
+0

的Json回覆是:{ 「成功」:真, 「數據」:{ 「LoadedObjectId」: 「10」, 「OwnerUserId」: 「2」,......}} –

+0

我認爲,在你的'form.load'響應中是錯誤的。 'OwnerUserId'應該是一個像你的'store.load'請求中的結構對象 –

+0

我認爲[setValue](http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.form .field.ComboBox-method-setValue)函數組合框可能是你在之後。 _將指定的值存儲到字段中。對於每個值,如果在基於valueField匹配的商店中找到記錄,則該記錄的displayField將顯示在該字段中。如果未找到匹配項,並且已定義valueNotFoundText配置選項,則將顯示該項作爲默認字段文本。否則,會顯示一個空白值,但該值仍將被設置._ –

回答

0

我已經改變了該項目的結構,它開始工作!

在我看來,有在商店或模型描述的一些錯誤配置...

但我不明白究竟是什麼:-)有什麼區別?有什麼建議麼?

{ 
        fieldLabel : 'Agent', 
        xtype  : 'combo', 
        id   : 'OwnerUserId', 
        name  : 'OwnerUserId', 
        triggerAction: 'all', 
        forceSelection: true, 
        editable : false, 
        allowBlank : false, 
        queryParam : 'GetAgents', 
        mode  : 'remote', 
        displayField:'VarName', 
        valueField : 'id', 
        width  : 353, 
        padding  : '0 0 0 30', 
        store: Ext.create('Ext.data.Store', { 
         fields: [ 
          {name: 'id'}, 
          {name: 'VarName'} 
         ], 
         autoLoad: true, 
         proxy: { 
          type: 'ajax', 
          url: 'http://localhost/1/Super.php?Action=GetObjectFormParams&GetAgents=1', 
          reader: { 
           type: 'json' 
          } 
         } 
        } 
       ) 
       } 
上form.load