dojo增强的网格服务器端分页不起作用



我在尝试使用增强的数据网格(dojo v1.10(执行服务器端分页时遇到了一个问题。第一页显示正确,但小部件(store?grid?plugin?(似乎忽略了"Content Range"标头值作为响应,不允许获取下一页。例如,响应标头包含"内容范围:项目0-9/17",分页显示"10个项目中的1到10个",下一页不可用。

经过一些调试,我看到范围值从JsonRest存储(查询函数(中正确读取

results.total = results.then(function(){
var range = results.ioArgs.xhr.getResponseHeader("Content-Range");
return range && (range = range.match(//(.*)/)) && +range[1];
}); 
...

但在ObjectStore的fetch方法中,totalCount值未定义,然后使用results.length:

var results = this.objectStore.query(query, args);
Deferred.when(results.total, function(totalCount){
Deferred.when(results, function(results){
if(args.onBegin){
args.onBegin.call(scope, totalCount || results.length, args);
...

知道吗?

谢谢,

我的代码:

// get grid store
var restStore = new JsonRest(
{
target: "ks2/api/workflow/...",
});
var memoryStore = new Memory();
var store = Cache(restStore, memoryStore);      
/*set up layout*/
var layout = [{
name: "id",
field: 'id',
width: '5%',
datatype:"string"
},
....
];
/*create a new grid*/
this.workflowGridWidget = new EnhancedGrid({
id: 'workflowGridWidget',
store: new ObjectStore({objectStore: store}),
structure: layout,
rowSelector: '20px',
plugins: {
pagination: {
pageSizes: ["10", "25", "50"],
defaultPageSize: 10,
description: true,
sizeSwitch: true,
pageStepper: true,
gotoButton: true,
maxPageStep: 4,//page step to be displayed
position: "bottom" //position of the pagination bar
}
}
});
/*append the new grid to the div*/
this.workflowGridWidget.placeAt("workflowDataGrid");
/*Call startup() to render the grid*/
this.workflowGridWidget.startup();

我发现了问题:我使用了一个不符合dojo restful的API,我需要使用添加JSON响应后处理

aspect.after(store, "query", this.processResponse);
...
processResponse: function ks2ProcessMonitor_datagrid_WorkflowDataGrid_processResponse(deferred) {
return deferred.then(function(response) {
//process response content
return processedResponse;   
});
},

这是正常工作的,但由于某种原因,它对分页产生了影响。删除此后处理(使用另一个符合dojo的API(修复了分页问题。也许我应该尝试使用Layke建议的Observable进行响应后处理。

最新更新