2017-12-12 1 views
0

グリッド、フォーム、ウィンドウのあるアプリを考えてみましょう。combobox:更新時にサーバーにvalueFieldとdisplayFieldの値を送信

グリッド行を選択すると、レコードデータ(詳細)がフォーム(バインディング)で表示されます。

グリッド行のdblclickイベントでは、フォームを持つウィンドウが表示され、レコードが更新され、フィールドが塗りつぶされます(バインディング)。

ウィンドウ上のフォームにはコンボボックスがあり、更新するフィールドの値はバインドで埋められます。

私の問題:

私は同時にアップデートでサーバーに(idと車値)をコンボボックスvalueFieldとdisplayFieldを送信する必要があります。

これをコンボボックスの設定で直接行う方法や、何らかの方法で別のバインド/値を追加する方法はありますか?

xtype: 'combobox', 
fieldLabel: 'myField', 
name:'id', 
bind: { 
    store: '{mystore}', 
    value: '{record.id}' //load value from record to update and bind (to display in grid and form) 
}, 
displayField:'cars', 
valueField:'id', 
queryMode: 'local', 

EDITED:メソッドまたはイベントを使用する必要が私は通常使用

一つの解決策は、次のとおりです。

var values = myForm.getValues(); 
    var comboValue = Ext.ComponentQuery.query('#mycomboItenmId')[0].getRawValue(); 

    var objCombosValue = { 
     'combo_value': comboValue 
    } 

    var allValues = Ext.Object.merge(values, objCombosValue); 

    record.set(allValues); 

    store.sync({}) 

は、このために任意の純粋な結合解決策はありますか?

答えて

1

store sync()経由で値をサーバーに送信していますか?モデルに新しいフィールドを追加して、displayField値を保持し、そのフィールドをコンボボックスの 'select'イベントで更新することができます。

+0

Fabioを渡しました。私が使用した解決策の1つは、同期メソッドの前にある種のextaparametersを追加することです(私の投稿を編集しました)。しかし、私が意図したのは、イベントやメソッドを使わずに値を送ることでした。純粋な縛りを持つマベ。 – josei

関連する問題