【问题标题】:JqGrid Traversing Through Row Data and Cell DataJqG​​rid遍历行数据和单元格数据
【发布时间】:2012-06-17 16:14:09
【问题描述】:

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

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

有什么想法吗? 提前致谢。

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    枚举网格中所有数据的最简单方法之一,您可以使用rowscells 实现。重要的是要理解,jqGrid 使用 HTML &lt;table&gt; 表示网格的数据,&lt;tr&gt; 表示行。 jQuery 对象是 DOM 元素的包装器。例如jQuery("#jgrid")[0] 是实现HTMLTableElement 的DOM 元素。 DOM 被所有的网络浏览器支持,所以你可以安全地使用它。在 jqGrid 内部,HTMLTableElementHTMLTableRowElementHTMLTableCellElement 确实永久使用。如果您检查您在当前代码中使用的getDataIDsgetRowData 的源代码,您会发现jqGrid 大量使用了&lt;table&gt;rows DOM 属性。

    the asnweranother one 中,您将找到枚举网格数据的代码示例。

    一般来说,枚举包括

    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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 2016-10-01
      • 2013-04-01
      • 2019-10-14
      • 1970-01-01
      相关资源
      最近更新 更多