extjs:当它的基础存储为空时从tabpanel上卸下网格
-
18-09-2019 - |
题
我有TABPANEL,其中包含连接到商店的网格。
几个事件可能会从商店中删除元素。
我希望在商店空的时从TABPANEL中删除电网,并且可能在我的代码中有一个位置以检查此事件。
我考虑过使用商店侦听器,但不幸的是,这会导致Ext代码中的异常。我的假设是,这是因为从TABPANEL将其删除后在网格上执行渲染。
关于如何完成此类任务而无需弄乱ext的任何想法都非常感谢。谢谢 :)
顺便说一句,这是一个代码摘录:
var myStore = new Ext.data.Store({
reader: new Ext.data.JsonReader({fields: MyRecord}),
listeners:{
'clear': function(store, recs) {
myTabPanel.remove(myGrid);
},
'remove': function(store, rec, idx) {
if (store.getCount() == 0) {
myTabPanel.remove(myGrid);
}
}
}
});
var myGrid = new Ext.grid.GridPanel({
id: "myGrid",
title: "A Grid",
store: myStore,
frame:false,
border:false,
columns: [
{
header: 'Remove',
align:'center',
width: 45,
sortable: false,
renderer: function(value, metaData, record, rowIndex, colIndex, store) {
return '<img src="images/remove.png" width="34" height="18"/>';
}
},{
header: 'Some Data',
dataIndex: 'data',
sortable: true
}
],
listeners:{
'cellclick':function(grid, rowIndex, colIndex, e){
var rec = myStore.getAt(rowIndex);
if(colIndex == 0){
myStore.remove(rec);
}
}
}
});
var myTabPanel= new Ext.TabPanel({
activeTab: 0,
items: [ fooPanel, barPanel, myGrid]
});
解决方案 2
问题解决了:我只需要删除设置“自动故障”参数为“ false”的网格。修复了下面的代码。
var myStore = new Ext.data.Store({
reader: new Ext.data.JsonReader({fields: MyRecord}),
listeners:{
'clear': function(store, recs) {
myTabPanel.remove(myGrid, false);
},
'remove': function(store, rec, idx) {
if (store.getCount() == 0) {
myTabPanel.remove(myGrid, false);
}
}
}
});
var myGrid = new Ext.grid.GridPanel({
id: "myGrid",
title: "A Grid",
store: myStore,
frame:false,
border:false,
columns: [
{
header: 'Remove',
align:'center',
width: 45,
sortable: false,
renderer: function(value, metaData, record, rowIndex, colIndex, store) {
return '<img src="images/remove.png" width="34" height="18"/>';
}
},{
header: 'Some Data',
dataIndex: 'data',
sortable: true
}
],
listeners:{
'cellclick':function(grid, rowIndex, colIndex, e){
var rec = myStore.getAt(rowIndex);
if(colIndex == 0){
myStore.remove(rec);
}
}
}
});
var myTabPanel= new Ext.TabPanel({
activeTab: 0,
items: [ fooPanel, barPanel, myGrid]
});
其他提示
有什么原因是您从选项卡上删除网格?似乎是一个奇怪的UI范式 - 为什么不只是用“空”消息保留空网格?
无论如何,我认为您的方法(使用商店事件和记录计数以确定何时删除)基本上是可以的。您可能想弄清楚如何解决您所说的任何错误。他们是什么?
不隶属于 StackOverflow