0
次のモデルとストアがあります。Ext js 6:グリッドに新しい挿入アイテムのすべてのフィールドが表示されない
モデル:
Ext.define('TruckTask.model.Company', {
extend: 'Ext.data.Model',
idProperty: 'id',
fields: [
{name: 'id', type: 'int', defaultValue: null},
{name: 'name', type: 'string'},
{name: 'site', type: 'string'},
{name: 'createdDate', type: 'date',
convert: function(rawValue, model) {
var intDate = parseInt(rawValue);
if(intDate > 0){
return Ext.util.Format.date(new Date(intDate), 'd.m.Y');
}
if(typeof(rawValue) == 'object'){
return rawValue;
}
}
},
{name: 'langId', type: 'int'}
]
})。
ストア:
Ext.define('TruckTask.store.Company', {
extend: 'Ext.data.Store',
requires : [
'TruckTask.model.Company',
'TruckTask.config.SecureRestProxy'
],
alias: 'store.company',
storeId: 'company',
model : 'TruckTask.model.Company',
autoLoad: true,
autoSync: true,
proxy: {
type: 'secure-rest',
reader: {
type: 'json'
},
writer: {
type: 'json'
},
api: {
read: '/api/company',
create: '/api/company',
update: '/api/company',
destroy: '/api/company'
}
}
});
私はこのモデルのリストにグリッドパネルを使用しています。しかし、私は新しいモデルの作成は別の形で行います。グリッドで
私は店を定義します。
store: {
type: 'company'
},
とのハンドラを実装しているフォーム送信:
var record = this.getViewModel().get('rec');
var companyStore = Ext.data.StoreManager.lookup('company');
companyStore.add(record);
だから、レコードはすぐにグリッドパネルに表示されますが、CreatedDateにフィールド値なし。この値はサーバーの応答から得られます。
サーバーレスポンスを取得したら、このレコードをグリッドパネルでどのように更新できますか?
自動的にそうする必要があります。そうでない場合は、問題を示す最小限の検証可能な例を作成してください。 – Alexander
はい、私はそのような動作を期待していますが、実際には、追加された新しい行をクリックすることもできません。グリッドで表示されますが、クリックすると選択できませんでした。 ext jsによって生成されるモデルのIDを避けるために、私のトリックにつなげることができますか?店内のイベントリスナーを見てください。新しいレコードを追加すると、テンプレート-によってIDが取得されます。サーバー側でエラーが出ます。 –
グループ化されたグリッドを使用しているときも、ExtJSのバグが原因です。グリッドでグループ化を使用していますか? – Alexander