Rest 如何在Azure移动服务中使用服务器端排序和分页
我正在使用jqGrid(inlineNav)处理来自azure服务的数据,并有兴趣了解如何使用azure移动服务的服务器端排序和分页Rest 如何在Azure移动服务中使用服务器端排序和分页,rest,azure,jqgrid,odata,jqgrid-inlinenav,Rest,Azure,Jqgrid,Odata,Jqgrid Inlinenav,我正在使用jqGrid(inlineNav)处理来自azure服务的数据,并有兴趣了解如何使用azure移动服务的服务器端排序和分页 请分享这方面的想法。Windows Azure移动服务提供REST API,可用于获取/插入/编辑/删除为相应访问配置的表的数据(请参阅)。请求使用HTTP GET动词。它支持开放数据协议(OData)URI选项$orderby,$skip,$top和$inlinecount,可用于填充jqGrid $(“#列表4”).jqGrid({ 网址:'https://m
请分享这方面的想法。Windows Azure移动服务提供REST API,可用于获取/插入/编辑/删除为相应访问配置的表的数据(请参阅)。请求使用HTTP GET动词。它支持开放数据协议(OData)URI选项
$orderby
,$skip
,$top
和$inlinecount
,可用于填充jqGrid
$(“#列表4”).jqGrid({
网址:'https://mohit.azure-mobile.net/tables/Schedules',
数据类型:“json”,
高度:“自动”,
colModel:[
{名称:“RouteId”,宽度:50},
{名称:“面积”,宽度:130}
],
cmTemplate:{editable:true,editrules:{required:true}},
行列表:[10,20,30],
rowNum:10,
prmNames:{search:null,nd:null},
ajaxGridOptions:{
contentType:“应用程序/json”,
标题:{
“X-ZUMO-APPLICATION”:“myKey”
}
},
serializeGridData:函数(postData){
if(postData.sidx){
返回{
$top:postData.rows,
$skip:(parseInt(postData.page,10)-1)*postData.rows,
$orderby:postData.sidx+“”+postData.sord,
$INLINECUNT:“所有页面”
};
}否则{
返回{
$top:postData.rows,
$skip:(parseInt(postData.page,10)-1)*postData.rows,
$INLINECUNT:“所有页面”
};
}
},
预处理前:函数(数据、文本状态、jqXHR){
var rows=parseInt($(this).jqGrid(“getGridParam”,“rowNum”),10);
data.total=Math.ceil(data.count/行);
},
jsonReader:{
重复项:false,
根:“结果”,
记录:“计数”
},
loadError:函数(jqXHR、textStatus、errorshown){
警报('HTTP状态代码:'+jqXHR.status+'\n'+
'textStatus:'+textStatus+'\n'+
'ErrorSprown:'+ErrorSprown);
警报('HTTP消息正文(jqXHR.responseText):'+'\n'+jqXHR.responseText);
},
寻呼机:“#第1页”,
sortname:“区域”,
viewrecords:是的,
标题:“时间表数据”,
gridview:对
});
对上述代码的一些注释:
- 我删除了
,以允许通过单击列标题对网格进行排序sortable:false
- 关于
选项,可以删除向服务器发送不需要的参数或重命名它。我使用prmNames
来拒绝发送prmNames:{search:null,nd:null}
和\u search
选项。我们可以使用nd
来重命名另外两个参数,但是因为我们需要计算排序:“$orderby”,行:“$top”
并在$skip
之后追加sidx
,所以我们需要使用sord
。因此,在这种情况下,不需要重命名其他参数serializeGridData
- 使用
我们构建了将发送到服务器的选项列表serializeGridData
将用于设置jQuery.ajax请求的其他参数,这些参数在内部执行jqGrid以访问服务器。我在示例中使用的选项在HTTP头中设置为ajaxGridOptions
和Content-Type:application/json
X-ZUMO-application:myKey
- 来自服务器的响应不包含
(总页数),因此在处理响应之前,我们使用total
回调来根据其他信息填充属性beforeProcessing
- 由于我们在URL中使用
选项,因此服务器的响应将包含有关记录总数的信息,并且数据页将被包装在回答的$inlinecount=allpages
结果部分。因此,我们使用
来读取响应jsonReader:{repeatitems:false,root:“results”,records:“count”}
- 我们必须删除
选项,因为服务器只返回请求的数据页,而不是整个数据集loadonce:true
prmNames:{search:null,nd:null}
,并且使用我发布的代码定义了serializeGridData
。您可以使用F12启动开发人员工具,在serializeGridData
的第一行设置断点并开始调试。您可以验证postData
的所有属性。您也可以在每封电子邮件中向我发布带有修改过的演示的URL。@Mohit:是否使用loadonce:true
取决于网格中的行数和azure页面的性能。我认为,如果少于1000行loadonce:true
将是最佳选择。对于超过10000行,您应该明确使用服务器端分页。当您应该使用客户端或服务器端分页时,1000到10000之间的边界取决于您的测试和您支持的web浏览器的性能。有关详细信息,请参阅。@Mohit:我认为只有从设计的角度来看,才有完全可销售的解决方案。这样你就可以