我正在将网格请求传递给一个接受“行”的int的Web服务,我正在尝试找到如何以及何时将用户选择的“ALL”值更改为-1,然后再将其发送到网络服务.
下面是我清理过的网格代码.我在数据类型函数中的$.ajax之前尝试了一些不同的代码块.但大多数尝试似乎都是我必须以最可能的方式做到这一点.例如,
datatype: function(postdata) { if ($("#gridTableAssets").jqgrid('getGridParam','rowNum') == 'ALL') { $("#gridTableAssets").appendPostData({ "rows": -1,"page": 1 }); } $.ajax({...
但这样做似乎会导致实际的“页面”GridParam在随后的网格操作中被忽略,迫使我在其他地方处理它.似乎这是经常在那里做的事情,并且有干净的方式去做.
清理网格代码:
$("#gridTableAssets").jqgrid({ datatype: function(postdata) { $.ajax({ url: "/Service/Repository.asmx/GetAssets",data: JSON.stringify(postdata),type: 'POST',contentType: "application/json; charset=utf-8",error: function(XMLHttpRequest,textStatus,errorThrown) { alert('error'); },success: function(msg) { var assetsGrid = $("#gridTableAssets")[0]; assetsGrid.addJSONData(JSON.parse(msg)); ... } }); },... pager: $('#pagerAssets'),rowNum: 15,rowList: [15,'ALL'],... onPaging: function(index,colindex,sortorder) { SessionKeepAlive(); } });
这是网络服务
[WebMethod] public string GetAssetsOfAssetStructure(bool _search,int rows,int page,string sidx,string sord,string filters)
解决方法
现在谈谈解决方案.这很容易,但我建议将数据类型替换为数据类型的函数:’json’.您可以使用标准’json’类型在函数内部执行的所有操作.要将contentType更改为“application / json; charset = utf-8”,可以使用ajaxGridOptions选项(有关详细信息,请参阅Setting the content-type of requests performed by jQuery jqGrid).可以使用postData参数替换jQuery.ajax的数据参数,但只有在想要向服务器发送一些其他参数时才需要它(如How to filter the jqGrid data NOT using the built in search/filter box中所述).最后,我们收到如下内容:
$("#gridTableAssets").jqgrid({ datatype: 'json',gridview: true,url: '/Service/Repository.asmx/GetAssets',//postData: postdata,// add some additional parameters ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },mtype: 'POST',// ... pager: $('#pagerAssets'),serializeGridData: function (postData) { if (typeof postData.rows === "string") { // "ALL" postData.rows = 10000; // or -1 if your server } if (isNaN(postData.page)) { // fix NaN in page for rows="ALL" postData.page = 1; } return JSON.stringify(postData); },// ... });
如果您计划在所有jqgrids中使用serializeGridData,ajaxGridOptions和一些其他参数,则可以在$.jgrid.defaults中定义此函数(请参阅另一个时间Setting the content-type of requests performed by jQuery jqGrid).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。