【问题标题】:Adding parameter to every jqGrid ajax call向每个 jqGrid ajax 调用添加参数
【发布时间】:2012-05-29 09:55:19
【问题描述】:

当页面上有一个 jqGrid 时,我想扩展它以传递一个额外的参数。到目前为止我最好的尝试:

...
    $('[role=grid]').jqGrid('setGridParam', { 'serializeGridData':MyGridOnBeforeRequest });

    function MyGridOnBeforeRequest (postData) {
        var newPostData = $.extend(postData, {
            specialParam: "foo"
        });
        return $.param(newPostData);
    }
...

我这样做是因为 jqGrid 似乎忽略了您对 jQuery 的 ajax 处理所做的任何更改。

谢谢。

【问题讨论】:

    标签: jquery asp.net-mvc jqgrid


    【解决方案1】:

    一般来说,您发布的代码应该可以工作,并且在下一次重新加载网格时将使用新的serializeGridData

    您在发布时使用serializeGridData 只是有点奇怪。改用postData参数就够了:

    var postData = $('#grid').jqGrid('getGridParam', "postData");
    $.extend(postData: {specialParam: "foo"});
    

    此外,在您的原始代码中,您使用$.extend(postData, {specialParam: "foo"});,它修改原始postData。还不错,不过一般的代码

    function myGridOnBeforeRequest (postData) {
        return $.extend({}, postData, {specialParam: "foo"});
    }
    

    甚至

    function myGridOnBeforeRequest (postData) {
        return $.extend(true, {}, postData, {specialParam: "foo"});
    }
    

    会更干净。 $.param 的使用并不是真正需要的。如果你返回一个对象,那么 jQuery.ajax 会自动为你调用$.param

    一种更常见的方法是直接使用postData 参数定义网格,如下所示

    postData: {
        specialParam: function () { return "foo"; }
    }
    

    在你可以在函数中实现更多逻辑的方式中,你可以使用函数体内部的外部scote中的一些变量,或者从页面上现有的控件中获取一些值(详见here) .在这种情况下,您可以在不使用getGridParam 的情况下实现动态 specialParam

    最后一句话。已经从myGridOnBeforeRequest 的颜色(与您的问题中MyGridOnBeforeRequest 的颜色进行比较)可以看出它将以另一种方式解释。如果函数名称以大写字母开头,则表示与您定义的新类MyGridOnBeforeRequestconstructor 的常用名称转换相对应。您必须将其用作var test = new MyGridOnBeforeRequest();:使用new。只需与var now = new Date(); 比较即可。强烈建议持有标准的 JavaScript 名称转换。

    【讨论】:

      【解决方案2】:

      如果它是一些不会改变太多的设置,你可以将它添加到 $.jgrid.defaults 使用类似这样的东西

      function getSpecialParam()
      {
          return 'foo';
      }
      $.jgrid.defaults = $.extend($.jgrid.defaults,
          {
              postedData:{
                  specialParam:getSpeicalParam
              }
          });
      

      【讨论】:

        猜你喜欢
        • 2011-09-15
        • 1970-01-01
        • 2012-06-28
        • 1970-01-01
        • 2012-03-03
        • 2013-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多