我刚刚创建了一个Sencha小提琴,其中我有一个面板和两个网格视图在其中。两个Grid视图都方便从左到右的项选择,反之亦然。我正在尝试显示从左网格视图到右网格视图所选的项。我使用sessionStorage代理来保存数据,同时将项目从左向右移动到网格视图。我必须使用sessionStorage,因为我的要求是在整个页面中持久化这个选择。
森查小提琴链接:https://fiddle.sencha.com/#view/editor&fiddle/2j7u
虽然,我没有收到任何错误,但我的实现不起作用。甚至控制台日志也显示正确的选择数据。但我仍然无法填充正确的网格视图。
我注意到的一件事是,在应用程序-> SessionStorage下的浏览器调试器中,我的sessionStorage对象总是为null。不知道为什么,但在控制台上显示数据。
任何指点都是非常感谢的!
另外,在ExtJS4.2中,同样的实现也很好。但我在迁移到ExtJS6.5时遇到了问题
谢谢,Dhiraj
进一步故障排除:
此外,我更新了同样的小提琴,并成功地使它进一步工作,在resumeEvents和'resumeEvents‘为我的右网格’商店‘-> store2和'sessionStore’-> sessionStore2在tropos.selectDevices.addToSelect方法。同时,我发现tropos.selectDevices.updateGridViews方法中的“store2.loadPage(1)”行在加载时清除了我的网格。我试图避免使用“clearOnPageLoad”配置设置将商店设置为false。但它不起作用,所以我评论了这句话,让它发挥作用。现在,虽然它可以工作,但我保持用户选择的主要要求仍然没有得到满足,因为sessionStorage仍然不起作用。
更新小提琴:https://fiddle.sencha.com/#view/editor&fiddle/2j7u
谢谢,Dhiraj
发布于 2018-07-13 17:38:10
在您的addToSelect中尝试以下代码:
example.selectDevices.addToSelect = function(storeObj){
var addRecs = [], newRecs = [],
store2 = Ext.getCmp('grid2').getStore();
//********************
//I just comment all *sessionStore2* references because is redundand,
//store2 is the same as sessionStore2
//********************
//sessionStore2 = Ext.data.StoreManager.lookup('currentlySelectedDevices');
//store2.suspendEvents();
//sessionStore2.suspendEvents();
Ext.each(storeObj,function(record){
var rec = record.copy();
rec.phantom = true;
addRecs.push(rec);
newRecs.push(record.data.hid);
});
example.selectDevices.selectedDeviceIds = example.selectDevices.selectedDeviceIds.concat(newRecs);
store2.add(addRecs);
//store2.commitChanges();
for(i=0; i < store2.data.items.length; i++) {
console.log("addToSelect: Selected Device Serial [" + i + "] from STORE_2: " + store2.data.items[i].data.hid);
}
//sessionStore2.add(addRecs);
//for(j=0; j < sessionStore2.data.items.length; j++) {
// console.log("addToSelect: Selected Device Serial [" + j + "] from SESSION_STORAGE_2: " + sessionStore2.data.items[j].data.hid);
//}
//sessionStore2.sync();
store2.sync();
//sessionStore2.resumeEvents();
example.selectDevices.updateGridViews();
};编辑:您必须将记录标记为幻影=真,这样同步才能正常工作
https://stackoverflow.com/questions/51316780
复制相似问题