Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在GWT的表尾动态添加Celltable行_Java_Gwt - Fatal编程技术网

Java 如何在GWT的表尾动态添加Celltable行

Java 如何在GWT的表尾动态添加Celltable行,java,gwt,Java,Gwt,目前,我正在使用以下方法将一堆行添加到我的CellTable中 public void createTable(){ CellTable table = new CellTable(0,tableResource); MyDataProvider dataprovider = new MyDataProvider(table); setDataToList(myDataList); } public MyDataProvider extends ListDataProvider<

目前,我正在使用以下方法将一堆行添加到我的CellTable中

    public void createTable(){
CellTable table = new CellTable(0,tableResource);
MyDataProvider dataprovider = new MyDataProvider(table);
setDataToList(myDataList);
}

public MyDataProvider extends ListDataProvider<MyModel>{
List<MyModel> dataList = new ArrayList<MyModel>();
public MyDataProvider(CellTable table){
    this.addDataDisplay(table);
    this.setList(dataList);
    }

    public void setDataToList(List<MyModel> models){
        for(MyModel model: models){
            dataList.add(model);
            refresh();
        }
    }

}

我在表中没有看到任何数据。整张桌子还是空的

您应该能够将元素添加到ListDataProvider返回的列表中。然后,在数据提供程序上调用refresh以将更改推送到UI

您还需要将该表添加到数据提供者:

dataProvider.addDataDisplay(table);
您可以使用此代码

MyDataProvider.getList().add(new MyModel());

我认为更新celltable的数据提供程序,然后调用refresh就可以了

//add table to data provider    do only the 1st time
dataProvider.addDataDisplay(cellTable);

//add new item to the list
dataProvider.getList().add(text);

//flush and refresh dataprovider for it to be updated
dataProvider.flush();
dataProvider.refresh();

//set celltable to new rowdata and row counts
cellTable.setRowData(0, dataProvider.getList());
cellTable.setRowCount(dataProvider.getList().size(), true);

//redraw the table with new data
celltable.redraw();

避免两行回答。试着为解决方案提供一个解释。这不是增加了很多要求吗。如果每次添加项时都要重新绘制表,那么我会添加所有项并重新绘制表。如果要更新多行,可以使用redrawRowint absRowIndex。。。但对于添加更多数据,您需要调用redraw,遗憾的是目前没有其他选择…非常感谢,但您的解决方案对我来说似乎太慢了。绝对。如果有更好的消息,我会及时通知你。