以下は、私が持っている2つのモデルです。
Ext.define('Company', { extend: 'Ext.data.Model',
fields: [
{name: 'company'},
{name: 'price', type: 'float'},
{name: 'change', type: 'float'},
{name: 'pctChange', type: 'float'},
{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'},
{name: 'industry'},
{name: 'desc'}
]
});
Ext.define('CompanyDemo', { extend: 'Ext.data.Model',
fields: [
{name: 'company'},
{name: 'price', type: 'float'},
{name: 'change', type: 'float'},
{name: 'pctChange', type: 'float'},
{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'},
{name: 'total'}
]
});
これら 2 つのモデルは、2 つの異なるグリッドに関連付けられています。1 つのグリッド (Company モデルに関連付けられている) からいくつかの行を選択し、ボタンをクリックすると、選択した行のみが 2 番目のグリッドに表示されます (これは CompanyDemo モデルに関連付けられています。最初はこのモデルは空で、何もありません)。データ)
これは Company モデルのグリッドです。
var grid2 = Ext.create('Ext.grid.Panel', { id: 'grid2',
store: getLocalStore(),
selModel: sm,
columns: [
{text: "Company", width: 200, dataIndex: 'company'},
{text: "Price", renderer: Ext.util.Format.usMoney, dataIndex: 'price'},
{text: "Change", dataIndex: 'change'},
{text: "% Change", dataIndex: 'pctChange'},
{text: "Last Updated", width: 135, renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'},
{text: "Industry", dataIndex: 'industry'},
{text: "Description", dataIndex: 'desc'}
],
columnLines: true,
width: 600,
height: 300,
frame: true,
title: 'Framed with Checkbox Selection and Horizontal Scrolling',
iconCls: 'icon-grid',
renderTo: 'grid'
});
このグリッドから選択したデータを取得できます。このデータを取得したら、Industry および Desc データを置き換えて、Total に置き換える必要があります (上記のモデル構造に従って)。これは、会社モデルでグリッドの選択された行を取得する方法です:
編集:
このコードで試してみました:
Ext.widget('button', {
text: 'Click Me',
renderTo: 'btn',
listeners: {
click: function(this1, evnt, eOpts ){
var records = sm.getSelection();
var data = [];
Ext.each(records, function (record) {
var modelData = record.getData(true);
//A dummy value as of now
modelData.total = '10';
data.push(modelData);
});
// grid1.getStore().loadData(records, true);
grid1.getStore().loadData(data, true);
}
}
});
ただし、次の行で例外がスローされます。
grid1.getStore().loadData(data, true);
2番目のグリッドに表示する前に、最初のモデルの2つのフィールドを置き換えて新しいデータを追加する方法がわかりません。
これについて教えてください。