1

我计划生成整个网格数据的自定义 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
    }
}

我不想硬编码列名,因为我计划将它用于所有网格。所以解决方案必须是通用的。

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

4

1 回答 1

6

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

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
    }
}
于 2012-06-25T07:40:17.437 回答