私は次のことを行う方法について少し確信が持てません:
グリッド パネルがあり、フィールドの 1 つでオートコンプリートがあり、アプリケーションのこの部分は正常に動作しています。
私がやりたいことは次のとおりです。オートコンプリート リストからアイテムを選択すると、そのアイテムに関連付けられた「説明」データを入力し、適切なセルに入力します。
たとえば、「PartNum 3」に対して返されるデータは次のとおりです。
{"PartNum":"PartNum 3","Description":"Description partnum 3"}
選択すると、グリッド パネルの [説明] セルで [説明 partnum 3] が更新されます。
今、私が少し混乱しているのは、これを行う最善の方法は何かということです。ここで説明されているように、最初の方法は「DOM」モデルのようです。 ExtJS グリッドで特定のセルの値を読み取って設定する方法は? . もう1つの方法は、ExtJs ComboBoxのストアの更新またはリロードなど、「ストア」ソリューションのようです。
だから私の質問は、どの方法を使用する必要があり、その理由は何ですか? 特に、バックエンドで追加操作を実行するときの最善の方法を知りたいです。
Gridpanel とオートコンプリートに適用される "Store" メソッドのコードも大歓迎です。
現在のコードに関する限り、ここに私のモデルがあります:
Ext.define('CustomerOrderLineGrid.model.COLInventoryPart', {
extend: 'Ext.data.Model'
, fields: ['Id', 'PartNum', 'Description']
, proxy: {
type: 'ajax'
, api: {
read: '../InventoryPart/InventoryPartListAutoComplete'
}
// , url: 'someUrl'
, extraParams:
{
total: 50000
}
, reader: {
type: 'json'
, root: 'InventoryParts'
, successProperty: 'success'
, totalProperty: 'total'
}
, simpleSortMode: true
}
});
店舗は:
Ext.define('CustomerOrderLineGrid.store.COLInventoryParts', {
extend: 'Ext.data.Store',
model: 'CustomerOrderLineGrid.model.COLInventoryPart',
autoLoad: false
, pageSize: 200
, remoteSort: true
, remoteFilter: true
, buffered: true
, sorters: [{
property: 'PartNum'
, direction: 'ASC'
}]
});
ビューの一部は次のとおりです。
, editor: {
xtype: 'combo'
, store: 'COLInventoryParts'
, displayField: 'PartNum'
, typeAhead: true
, width: 320
, hideTrigger: true
, minChars: 2
, listeners:
{
select: function (f, r, i) {
// CODE TO INSERT TO POPULATE DESCRIPTION FIELD
}
}
}