0

我一直在寻找几个小时,但我找不到我的问题的答案:我已经设置了一个ListGrid类似于此处显示的那个(链接)。现在我使用 XML 文件作为数据源(默认行),就像在示例中一样。也可以在网格中添加和删除行。

因此,我想将网格中每个用户的数据存储在数据存储(Google Datastore)中。所以我需要将当前用户的所有行作为字符串读取。什么是这样做的好方法?我已经尝试了以下方法,但没有成功:

    ListGrid componentsGrid = new ListGrid();
    componentsGrid.setWidth(500);
    componentsGrid.setHeight(224);
    componentsGrid.setCellHeight(22);
    componentsGrid.setDataSource(ComponentsXmlDS.getInstance());

    componentsGrid.setAutoFetchData(true);
    componentsGrid.setCanEdit(true);
    componentsGrid.setModalEditing(true);
    componentsGrid.setEditEvent(ListGridEditEvent.CLICK);
    componentsGrid.setListEndEditAction(RowEndEditAction.NEXT);
    componentsGrid.setAutoSaveEdits(false);
    layout.addMember(componentsGrid);

        //First try
        componentsGrid.fetchData();                 
        logger.log(Level.INFO, "Components: "+ componentsGrid.getResultSet().get(0).getAttribute("componentType"));

        //Second try                    
        logger.log(Level.INFO, "Components: "+ componentsGrid.getAllFields());

       // Third try
       logger.log(Level.INFO, "Components: "+ componentsGrid.getRecords());

有人有提示吗?非常感谢您的帮助。

4

1 回答 1

0

如果我很好地理解您的要求,您想读取网格的所有行并将它们的数据存储在数据库中。我认为您可以使用: getRecordList()which *将此 DataBoundComponent 的底层数据作为 RecordList 返回。您将能够在此列表中进行迭代,为每条记录提取所需的属性值并将这些数据存储在您的数据库中。或者使用getRecords()您所说的方法并在ListGridRecord获得的数组中迭代。

要遍历 RecordList,您必须将其转换为数组,例如使用许多虚拟对象和方法:

RecordList data = MyGrid.getRecordList();
for(Record record : data.toArray()){
    MyDataObject obj = new MyDataObject()
    obj.setId(record.getAttribute("thId"));
    obj.setOne(record.getAttribute("anAttribute"));
    obj.setTwo(record.getAttribute("anotherAttribute"));
    obj.StoreToDb();
}
于 2013-09-29T19:40:53.743 回答