2014-09-27 44 views
0

我在我的smartgwt項目有listgrid問題。smartgwt listgrid.getRecordList()不給我更新的數據

我的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

如果你想通過一個讓每一個編輯和未經編輯的記錄,你可以循環一個:

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(); 
}