我正在计划生成整个网格数据的自定义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.
有任何想法吗 ?提前致谢.
枚举网格中所有数据的最简单方法之一是使用行和单元格实现.重要的是要理解,jqGrid使用HTML <table>
来表示网格的数据并<tr>
表示行.jQuery对象是DOM元素的包装器.例如jQuery("#jgrid")[0]
,DOM元素实现HTMLTableElement.实际上所有的Web浏览器都支持DOM,因此您可以安全地使用它.在内部,jqGrid 实际上永久使用HTMLTableElement,HTMLTableRowElement和HTMLTableCellElement.如果你检查你在当前代码中使用的getDataIDs和getRowData的源代码,你会发现jqGrid使用rows
了<table>
密集的DOM属性.
一般来说,枚举包括
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)
归档时间: |
|
查看次数: |
9180 次 |
最近记录: |