jqgrid - 如何在内联编辑模式下将参数添加到saveRow的extraparam

时间:2012-02-02 04:40:34

标签: javascript jquery jqgrid

我有一个字符串:

var str = "it's a beautiful day";

我将此字符串传递给函数:

rowSave(id, str);

rowSave()

var rowSave = function(id, str){
    jQuery("#myjqgrid").jqGrid('saveRow',id,{
        "succesfunc": function(response) {              
            return true;                
        },                                  
        "url": "server.aspx",
        "mtype": "GET",
        "extraparam": {}
    });
}

我想做什么

我想

  • 根据空格分割字符串
  • 字符串中的每个单词(在拆分后)都应作为extraparam中的参数传递,以便将其附加到网址。

我不知道该怎么做。

根据Oleg的建议(见下文),添加到我的jqgrid定义中的ajaxRowOptions: {cache: false}

$("#myjqgrid").jqGrid({
   ajaxRowOptions: {cache: false}
});

2 个答案:

答案 0 :(得分:1)

您可以定义类似于以下内容的函数来构建额外的参数对象:

function encodeStr(str){
    var s = str.split(' '), i, result = {};

    for (i = 0; i < s.length; i++){
        result['param' + i] = s[i];
    }

    return (result);
}

jQuery.ajax由jqGrid在内部使用,可以确保正确的序列化。如果遇到问题,请使用encodeURIComponent对每个参数进行编码。

无论如何,只需在指定参数时调用此对象:

"extraparam": encodeStr(str)

答案 1 :(得分:1)

代码可以是以下内容:

var rowSave = function(id, str) {
    var strParts = str.split(' '), l = strParts.length, i, obj = {},
        codeStart = 'A'.charCodeAt(0); // 65

    for (i = 0; i < l; i++, codeStart++) {
        obj[String.fromCharCode(codeStart)] = strParts[i];
    }
    $("#myjqgrid").jqGrid('saveRow', id, {
        succesfunc: function(response) {
            return true;                
        },                                  
        url: "server.aspx",
        mtype: "GET",
        extraparam: obj
    });
}

首先,obj将填充为{A: "it\'s", B: "a", C: "beautiful", D: "day"},然后将其用作extraparam的值。