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

セルを使用して実装できる、グリッド内のすべてのデータを列挙する最も簡単な方法の 1 つです。jqGrid は HTML<table>を使用してグリッドのデータを<tr>表し、行を表すことを理解することが重要です。jQuery オブジェクトは DOM 要素のラッパーです。たとえば、 HTMLTableElementjQuery("#jgrid")[0]を実装する DOM 要素です。DOM は、実際にはすべての Web ブラウザーでサポートされているため、安全に使用できます。内部的に jqGrid は、 HTMLTableElementHTMLTableRowElement、およびHTMLTableCellElementを実際に永続的に使用します。getDataIDsgetRowDataのソース コードを調べると、現在のコードでこれを使用すると、jqGrid がrowsの DOM プロパティを<table>集中的に使用することがわかります。

回答の回答では、グリッド データを列挙するコードの例を見つけることができます。

一般に、列挙は次から構成されます。

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 に答える