修改
事实证明,商店不能有重复的ID。当我删除此字段时,所有记录显示 - 这意味着网格不尊重pageSize
我遇到一个问题,我的所有商店记录都显示在我的网格中。数据从JSON请求中正确返回,并且pagingtoolbar行为正确。
这是我的商店:
var store = Ext.create('Ext.data.Store', {
storeId : 'resultsetstore',
autoLoad : false,
model : model,
pageSize : itemsPerPage, // 3
proxy: {
type : 'ajaxwithpayload', //custom ajax proxy to read 'jsonData'
url : 'MCApp',
jsonData: searchquery,
reader: {
type : 'json',
root : 'elements'
}
}
});
我在这里加载商店,并返回所有正确的结果:
store.load({
params: { start: 0, limit: itemsPerPage },
callback : function(records, operation, success) {
if(success) {
mainresponse = operation.response.responseText;
if( mainresponse.length == 0 ){
alert('No results returned');
return;
}
var jsonResponse = Ext.JSON.decode(mainresponse);
}
else {
alert('Search Failed: Could not reach the server');
}
最后,一个简单的网格pagingtoolbar
:
var grid = Ext.create('Ext.grid.Panel', {
title: 'Test Data',
store: store,
columns: [{
text: 'Technical Name',
dataIndex: 'tech'
}, {
text: 'ID',
dataIndex: 'element.id'
}, {
text: 'Name',
dataIndex: 'name',
mapping: 'element.name'
}, {
text: 'View',
dataIndex: 'view'
}, {
text: 'Description',
dataIndex: 'description'
}],
dockedItems: [{
xtype: 'pagingtoolbar',
store: store,
pageSize: itemsPerPage,
dock: 'bottom',
displayInfo: true
}],
renderTo: Ext.getBody()
});
这里的问题是并非我的所有结果都加载到网格中。似乎遇到重复的ID时,它会缩短结果。那个可能不是的问题,只是我的猜测
在我的日志中,我看到了我需要返回的所有数据。在下图中,我应该使用相同的Element ID 001
3行,但只显示一行:
另外需要注意的是,当我单击pagingtoolbar上的Next按钮时,结果不会更改,并且它在我的控制台上也会显示为 POST 。我不确定它是应该这样做还是 GET ?
我用闪电来说明 令人震惊 这是不行的
有什么想法吗?
答案 0 :(得分:2)
需要注意的一件非常重要的事情是服务器负责分页而不是ExtJS。服务器不得返回所有行,只能返回当前页面的行。您的服务器端代码必须考虑参数page
,start
和limit
才能让客户端工作。
我认为,除了重复的ID之外,是您遇到问题的主要原因。特别是为什么你在第一页和第二页看到相同数据的原因:
ExtJs向服务器询问第1页的数据并获取所有行。之后,ExtJs向服务器询问第2页的数据并再次获取相同的行。这不起作用。
答案 1 :(得分:0)
当您将名称属性命名为" id"时可能会出现这种情况。在模型的fields数组中。试着改变这一点。