当网格加载或刷新时,如何自动附加列名称以发布发送到php的数据?

时间:2011-09-01 01:43:08

标签: jqgrid

我是jqGrid和jquery的新手,我正在尽可能快地学习但是我仍然有点失去了一些关于如何将附加信息附加到jqgrid中发送到php的帖子数据的东西

如果php脚本在初始加载时知道网格需要哪些列,或者按下jqgrid刷新/重新加载按钮,那将会很不错。

我知道我可以使用postData选项: postData:{name:val ,,,},但我希望只使用此函数自动从colModel定义中提取列名。

    postData: function(){
        colmodel = $('#tab4-grid').jqGrid('getGridParam','colModel');
        colarray = '{';
        for (var i in colmodel) {colarray += '"'+colmodel[i].name+'":"'+colmodel[i].name+'",';}
        colarray += '}';
        return colarray;
    },

所以我不必再手动拼出它们。但是,虽然该函数生成了正确的代码,但它没有被发布。我似乎无法弄清楚问题。有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:0)

你要做的第一件事就是重写

postData: function() { ... }

postData: {
    myColumnsName: function() { ... }
}

jqGrid已经向服务器发送了一些标准参数(pagerows,...)。使用上面的代码,您将添加名为myColumnsName附加参数,您可以在函数体内以任何方式填写。

您当前的实施非常脏。您没有定义局部变量colmodelcolarray。此外,您尝试将字符串数组序列化为对象('{}')而不是数组('[]')。如果枚举数组项for (var i in colmodel)更好,则不应使用for (var i=0; i<colmodel.length; i++)构造。此外,'colModel'包含一些列名称('rn','cb','subgrid'),您应该在枚举中跳过这些名称。您可以定义为var colNames = [];并使用colNames.push填充它。然后,您可以使用json2.js中的标准JSON.stringify方法将数组转换为JSON字符串。