Extjs 网格不';即使在筛选时重新加载存储后也不会更改
我想要一个网格,它将在删除任何行并检索具有相同成员id的行后更改或重新加载。为此,我添加了过滤器。在删除任何行之后,我再次使用过滤器回调存储。我的商店过滤良好,但网格无法显示它……它保留了以前的显示Extjs 网格不';即使在筛选时重新加载存储后也不会更改,extjs,extjs4.1,Extjs,Extjs4.1,我想要一个网格,它将在删除任何行并检索具有相同成员id的行后更改或重新加载。为此,我添加了过滤器。在删除任何行之后,我再次使用过滤器回调存储。我的商店过滤良好,但网格无法显示它……它保留了以前的显示 Ext.define('${pkgName}.v02x001001.SV02X00100101' , { extend : 'Ext.grid.Panel', alias : 'widget.sv02x00100101', id : 'sv02x00100101', bo
Ext.define('${pkgName}.v02x001001.SV02X00100101' , {
extend : 'Ext.grid.Panel',
alias : 'widget.sv02x00100101',
id : 'sv02x00100101',
border : true,
modal : true,
height : 300,
width : 455,
viewConfig: {
stripeRows : true,
forceFit : true,
emptyText : 'No Records to display',
listeners : {
viewready : function(v) {
var store = Ext.data.StoreManager.get('S02X001001');
store = !store ? Ext.create("S02X001001") : store;
var value = Ext.getCmp('member-sv02x00100104').getValue(),
filters = new Array();
store.clearFilter();
store.filter('member', value);
filters.push({
property : 'member',
value : value
});
store.loadPage(1, {
filters : filters
});
}
}
},
initComponent: function() {
this.store = 'S02X001001';
this.tbar= Ext.create('Ext.ux.StatusBar', {
topBorder : false,
statusAlign : 'right',
items : [{
xtype :'button',
text : 'ADD',
icon : "${resource(dir: 'images', file: 'ADD01003.png')}",
listeners : {
click : this.onNewAddress
}
},'-']
});
this.columns = [
{
text : 'Address Line 1',
dataIndex : 'addressline1',
sortable : false,
flex : 1
},{
text : 'Address Line 2',
dataIndex : 'addressline2',
sortable : false,
width : 170
},{
menuDisabled : true,
sortable : false,
id : 'deletee',
xtype : 'actioncolumn',
width : 22,
items : [{
icon : "${resource(dir: 'images', file: 'DEL01005.png')}",
tooltip : 'Delete This?',
scope : this,
handler : function(grid, rowIdx, colIdx) {
var record = grid.getStore().getAt(rowIdx);
var conId = record.data.id
this.onDeleteClick(conId);
}
}]
}];
this.callParent(arguments);
},
onNewAddress: function(btn, e, eOpts){
var view=Ext.widget('sv02x00100102');
view.show();
var a = Ext.getCmp('member-sv02x00100104').getValue();
Ext.getCmp('member-sv02x00100102').setValue(a);
},
onDeleteClick:function(conId){
Ext.MessageBox.show({
title : 'Delete',
msg : 'Really want to delete ?',
icon : Ext.Msg.WARNING,
buttons : Ext.MessageBox.YESNO,
buttonText :{
yes: "Delete",
no : "No"
},
scope : this,
animateTarget : 'deletee',
fn: function(btn, dbQty){
if(btn == 'yes'){
var registration = Ext.create('${appName}.model.M02X001001',{
id : conId
});
var store = this.getStore();
registration.destroy({
scope : this,
success : function(model, operation) {
if(model != null){
var store = Ext.data.StoreManager.get('S02X001001');
store = !store ? Ext.create("S02X001001") : store;
var value = Ext.getCmp('member-sv02x00100104').getValue(),
filters = new Array();
store.clearFilter();
store.filter('member', value);
filters.push({
property : 'member',
value : value
});
store.loadPage(1, {
filters : filters
});
}
},
failure: function(){
console.log('Unable to delete');
}
});
}
}
});
}
}))
如何检索其余的相对行
这是我的商店
Ext.define('${pkgName}.S02X001001', {
extend : 'Ext.data.Store',
model : '${appName}.model.M02X001001',
idProperty: 'id',
autoLoad : true,
autoSync : true,
filterParam: 'query',
remoteSort: true,
proxy : {
type : 'ajax',
noCache : false,
limitParam: 'limit',
startParam: 'start',
url : '${createLink(controller:'C02x001001', action: 'store')}',
reader:{
type : 'json',
root : 'data',
totalProperty : 'total',
successProperty : 'success',
messageProperty : 'message',
implicitIncludes: true
},
simpleSortMode : true
},
sorters: [{
property: 'id',
direction: 'asc'
}]
})) 应该自动刷新网格视图, 但您可以通过手动方式刷新视图: 使用方法getView().refresh(); 尝试:
谢谢你的回复。。。我试过你的答案。。。。。它保持不变。。网格保存以前的记录…………可能您想先尝试记录存储记录。用法:console.log(store_name);然后观察he记录的数据(store.data.items)。如果记录是服务器响应的真实数据,则表示错误不是来自存储区。没有功能,可能是我清除了我的需求。好。i、 表中有五个特定成员的数据,但表中有许多其他成员的数据。因此,我通过过滤检索特定成员的数据,并在“查看准备就绪的网格”面板中使用它们。所以我的网格保存特定成员的数据。现在,如果我删除该特定成员的一个数据,还有多少数据?应该是四点吧?数据库显示有四个。但网格显示为5。这意味着网格不会重新加载新记录(数据库的当前状态)。如果我刷新我的应用程序,它会显示四个。这意味着???您应该添加这个“Ext.getCmp('sv02x00100101').getView().refresh();”在onDeleteClick()上删除记录后;网格将自身绑定到一个存储区,并从此对所有事件作出反应。所以,当你说商店有所有记录,但网格没有显示它们时,这是没有意义的。。。您正在谈论的商店实例是否真的是绑定到网格的商店?你真的确定这些记录被载入了商店吗?是的,Sra,确实如此。我有一个网格面板,可以检索过滤后的数据。但当我删除任何数据时,网格无法更改,尽管我在删除函数成功后再次调用了网格的存储。我在商店里找到了经过过滤的数据(Firebug)。我的错误是什么……网格只是一种表示层,数据在存储中。如果存储更改,则由于绑定,网格将更改为。如果没有发生这种情况,您应该重新检查与您合作的门店的参考资料,以及门店是否可以显示您的回复。由于绑定,如果存储挂起他的events.Sra,网格将无法做出反应,最后我在使用Grails+ExtJS时发现了一个轻微的关联问题。因为这个网格表现出某种神秘的东西。现在一切都好了。
Ext.getCmp('sv02x00100101').getView().refresh();