JqG​​rid遍历行数据和单元格数据

Deb*_*Deb 1 jquery jqgrid

我正在计划生成整个网格数据的自定义XML,我需要遍历每一行,以及网格的每个单元格.

如下所示,可以轻松遍历行.我面临的唯一问题是遍历单元格,因为getRowData返回键值对而不是数组.

var ids = jQuery("#jgrid").jqGrid('getDataIDs');
//traverse the rows
for (var i = 0; i < ids.length; i++) {
    var rowdata = $("#jgrid").getRowData(ids[i]);
    var res = "";
    // Traverse the cells which does not work
    for (var j = 0; j < rowdata.length; j++) {
        ...
        ....logic to generate Xml element for each cell
    }
}
Run Code Online (Sandbox Code Playgroud)

我不想硬编码列名,因为我打算将它用于所有网格.所以解决方案必须是Generic.

有任何想法吗 ?提前致谢.

Ole*_*leg 6

枚举网格中所有数据的最简单方法之一是使用单元格实现.重要的是要理解,jqGrid使用HTML <table>来表示网格的数据并<tr>表示行.jQuery对象是DOM元素的包装器.例如jQuery("#jgrid")[0],DOM元素实现HTMLTableElement.实际上所有的Web浏览器都支持DOM,因此您可以安全地使用它.在内部,jqGrid 实际上永久使用HTMLTableElement,HTMLTableRowElementHTMLTableCellElement.如果你检查你在当前代码中使用的getDataIDsgetRowData的源代码,你会发现jqGrid使用rows<table>密集的DOM属性.

asnwer另一个中,您将找到枚举网格数据的代码示例.

一般来说,枚举包括

var $grid = jQuery("#jgrid"), rows = $grid[0].rows, cRows = rows.length,
    iRow, rowId, row, cellsOfRow;

for (iRow = 0; iRow < cRows; iRow++) {
    row = rows[iRow];
    if ($(row).hasClass("jqgrow")) {
        cellsOfRow = row.cells;
        // row represent the row with cellsOfRow.length cells.
        // So one can use for loop with iCol between 0 and cellsOfRow.length
        // cellsOfRow[iCol] represent the cell with the index iCol
        // and $(cellsOfRow[iCol]).text() - the text of the cell
    }
}
Run Code Online (Sandbox Code Playgroud)