我在我的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();
}
答案 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();
}