ここに私が持っているものがあります:
ボックスの 1 つをクリックすると、以下のリストがサーバー側でフィルタリングされます。
グリッド内の行を選択してフィルターをコミットすると、次のエラーが発生します。
「ローカル キャッシュに存在しない ID に対して getById が呼び出されました」
これは、フィルターに選択したレコードが含まれていても発生します。
モジュールは次のとおりです。
Ext.define('NG.model.auxClasses.notifications.WhatsNew', {
extend: 'Ext.data.Model',
idProperty: 'iD',
autoLoad: true,
fields: [
{ name: 'iD', type: 'int' },
{ name: 'isActive', type: 'boolean' },
{ name: 'documentIdentifier', type: 'string' },
{ name: 'sourceSiteName', type: 'string' },
{ name: 'targetSiteName', type: 'string' },
{ name: 'createDate', type: 'date', dateFormat: 'c' },
{ name: 'businessArchiveEvent', type: 'string' },
{ name: 'businessArchive', type: 'string' },
{ name: 'previousWhatsNewEvents' },
{ name: 'isPin', type: 'boolean' },
{ name: 'IsDocumentReadByMe', type: 'boolean' },
{ name: 'isDocumentReadByOthers', type: 'boolean' },
{ name: 'documentYear', type: 'int' },
{ name: 'businessDirection', type:'int'}
],
// self association model
associations: [{
type: 'hasMany',
model: 'auxClasses.notifications.WhatsNew',
name: 'previousWhatsNewEvents',
primaryKey: 'id',
associationKey: 'previousWhatsNewEvents'
}],
proxy: {
type: 'rest',
url: 'api/WhatsNew/'
}
});
店舗はこちら:
Ext.define('NG.store.WhatsNews', {
extend: 'NG.store.AbstractStore',
model: 'NG.model.auxClasses.notifications.WhatsNew',
alias: 'store.whatsnewstore',
autoLoad:true,
buffered: true,
pageSize: 50
});
アップデート:
ウサギを追って穴まで行ったところ、うまくいくかどうかわからない回避策が見つかりました。
これが私が失敗した場所です:
refresh: function() {
...
// Don't need to do this on the first refresh
if (me.hasFirstRefresh) {
// Some subclasses do not need to do this. TableView does not need to do this.
if (me.refreshSelmodelOnRefresh !== false) {
me.selModel.refresh();
} else {
// However, even if that is not needed, pruning if pruneRemoved is true (the default) still needs doing.
me.selModel.pruneIf(); <<< HERE WE FAIL. THIS METHODS CALLS THE GET BY ID
}
}
...
}
したがって、私のビューでは、次のビュー構成を追加しました。
viewConfig: {
refreshSelmodelOnRefresh:true // Workaround : if this is not set to true when the grid will refresh and a record will be selected we will get an ext error
},
これにより、発生したエラーは解決されましたが、最終結果とそれが後で害を及ぼす可能性があるかどうかはわかりません.
誰かが光を遮ることができれば...
そのための回避策はありますか?