jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – 在传递给Web服务之前将jqGrid rowNum从ALL更改为-1的最佳方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望找到允许用户选择在jqGrid中显示所有记录的最佳方法.我知道为rows参数传递的-1值表示ALL,但我想在rowList SELEct元素中出现单词“ALL”而不是-1,即. rowList:[15,50,100,’ALL’].

我正在将网格请求传递给一个接受“行”的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)

解决方法

首先,我发现你的问题非常好.当我开始使用jqGrid时,我在rowList中搜索“All”并进行了一些实验,但没有任何成功.然后我忘记了这个问题.现在在你的问题之后我想到在我所有的jqGrids中使用这个功能.

现在谈谈解决方案.这很容易,但我建议将数据类型替换为数据类型的函数:’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).

大佬总结

以上是大佬教程为你收集整理的jquery – 在传递给Web服务之前将jqGrid rowNum从ALL更改为-1的最佳方法全部内容,希望文章能够帮你解决jquery – 在传递给Web服务之前将jqGrid rowNum从ALL更改为-1的最佳方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。