【问题标题】:How to dynamically bind and rows and column in JqGrid?如何在 JqGrid 中动态绑定行和列?
【发布时间】:2017-06-21 01:06:23
【问题描述】:

我想用下面的json组成一个jqgrid,下面的json可能会经常变化。

{"行值":[ { “公司”:“测试”, “价格”:98, “变化”:8, “交换”:8, "上次更新时间": "2", “公司编号”:2 }, { “公司”:“test123”, “价格”:1, “变化”:1、 “交换”:1, "上次更新时间": "1", “公司编号”:3 }, { “公司”:“ABC”, “价格”:1234, “变化”:123, “交换”:1, "上次更新时间": "1", “公司编号”:1 } ]}

这是我的代码:

$("#table_div"+chartId).empty().jqGrid({
    datatype:'json',
    data: data,
        jsonReader: {
            repeatitems: false,

        },
        colNames: getColNames(data),
        colModel: getColModels(data),
        rowNum:50,
        rowList: [50, 100, 150, 200],
        autowidth: true,
        height: '100%',
        shrinkToFit: false,
        gridview: true,
        autoencode: true,
        sortorder: "asc",
        viewrecords: true,
        ignoreCase: true,
        hoverrows: true,
        caption: title
});

function getColNames(data) {
var keys = [];
for(var i=0;i<data.rowValue.length;i++){
    for(var key in data.rowValue[i]) {
    if (data.rowValue[i].hasOwnProperty(key)) {
        keys.push(key);
    }
}
break;
}
return keys;}
function  getColModels(data) {
var colNames= getColNames(data);
var colModelsArray = [];
for (var i = 0; i < data.rowValue.length; i++) {
    var str;
    if (i === 0) {
        str = {
            name: colNames[i],
            index:colNames[i],
            key:true,
            editable:true
        };
    } else {
        str = {
            name: colNames[i],
            index:colNames[i],
            editable:true
        };
    }
    colModelsArray.push(str);
}
console.log(colModelsArray)
return colModelsArray;}

无论如何,我都能成功获得列。但我在获取 colmodels 时遇到了问题。 我是javascript的新手。任何帮助,将不胜感激。 注意:rowValue 会动态变化 提前致谢!!

【问题讨论】:

    标签: javascript jquery json jqgrid


    【解决方案1】:

    ---- ColName ----- var colName = Object.keys(data["rowvalue"][0]);

    ---- ColModel ----
    var colModel = [];
    for(var i=0; i<colName.length; i++) {
        var tempColModel = {};
        tempColModel["name"] = colName[i];
        tempColModel["id"] = colName[i];
        tempColModel["width"] = 90;
        colModel.push(tempColModel);
    }
    

    请根据您的情况在 ColModel 中添加其余属性。

    【讨论】:

    • 我使用了另一种方法来导出数据。我在 Jqgrid 中还有另一个问题,已在许多论坛中讨论过,但我没有得到清晰的视图。我正在导出过滤后的数据,但它只从第 1 页导出,而不是从其他页面导出。有人可以帮忙吗??
    • 我也有解决方案,而不是使用 jqgrid 下载数据,而是从下载按钮调用一个函数,以及在 jqgrid 中显示的变量中的任何数据,下载整个数据。
    • 您将把网格的整个数据放入“data”变量中,您可以使用它来导出数据。
    猜你喜欢
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多