smartgwt listgrid.getRecordList()没有给我更新的数据

时间:2014-09-27 07:00:10

标签: smartgwt listgrid

我在我的smartgwt项目中遇到listgrid问题。

我的listgrid数据来自服务器端,用户允许编辑该网格中的任何记录。

searchGrid.setAutoFetchData(true);
searchGrid.setDataSource(searchDS);
searchGrid.setAlwaysShowEditors(true);

当我尝试编辑网格中的任何单元格并尝试遍历网格中的所有记录时,它并没有给出我编辑的最新更新单元格。

我使用下面的代码从我的listgrid中获取所有记录。

private String getGridDetails() {

    RecordList records = searchGrid.getRecordList();

    Document doc = XMLParser.createDocument();
    Element rootElement = doc.createElement("ROOT");
    doc.appendChild(rootElement);

    for (int i = 0; i < records.getLength(); i++) {

        Record rec = records.get(i);
        Element row = doc.createElement("ROW");

        for (String str : rec.getAttributes()) {

            String propertyVal = rec.getAttributeAsString(str);

            if (propertyVal != null
                    && propertyVal.equalsIgnoreCase("") != true) {
                Element columnElement = doc
                        .createElement(str.toUpperCase());
                columnElement.appendChild(doc.createTextNode(propertyVal));
                row.appendChild(columnElement);
            }
        }
        rootElement.appendChild(row);
    }

    return doc.toString();
}

1 个答案:

答案 0 :(得分:1)

如果您想获得每条经过编辑和未经编辑的记录,您可以逐个循环:

public Record[] getData(ListGrid grid)
{
    RecordList data = new RecordList();

    for (int i = 0; i < grid.getTotalRows(); i++)
        data.add(grid.getEditedRecord(i));

    return data.duplicate();
}

但是,如果您只想检索已编辑的记录,请尝试以下代码段:

public static Record[] dameDatosLocalesEditedRows(ListGrid grid)
{
    RecordList data = new RecordList();
    int[] edited = grid.getAllEditRows();

    for (int i = 0; i < edited.length; i++)
        data.add(grid.getEditedRecord(edited[i]));

    return data.duplicate();
}