Java GWT-更新面板中的表
我有一个垂直面板,上面有一张桌子。OnModuleLoad从数据库中获取数据,并将其显示在表中。单击按钮时,我想将列表框中的新数据添加到列表框中。工作正常,但我不知道如何更新表/面板。我现在要做的是创建一个新表来显示数据,但我不能删除第一个表。我是否必须将表格附加到面板才能删除它?事实上,我不喜欢这个解决方案,这就是为什么我想知道是否有一个更新方法或什么 创建表格Java GWT-更新面板中的表,java,database,gwt,panel,celltable,Java,Database,Gwt,Panel,Celltable,我有一个垂直面板,上面有一张桌子。OnModuleLoad从数据库中获取数据,并将其显示在表中。单击按钮时,我想将列表框中的新数据添加到列表框中。工作正常,但我不知道如何更新表/面板。我现在要做的是创建一个新表来显示数据,但我不能删除第一个表。我是否必须将表格附加到面板才能删除它?事实上,我不喜欢这个解决方案,这就是为什么我想知道是否有一个更新方法或什么 创建表格 public void createTimeTable(){ //Table and Panel -> cre
public void createTimeTable(){
//Table and Panel -> created globally
//On Load -> get all times which are already booked
serviceImplURL.getRpcDB().getBookedTimes(username, new AsyncCallback<ArrayList<Times>>() {
/**
*/
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
/**
*/
@Override
public void onSuccess(ArrayList<Times> startList) {
/**
*/
table.setRowCount(startList.size(), true);
table.setRowData(0, startList);
// Add column to show the start time.
TextColumn<Times> startColumn
= new TextColumn<Times>() {
@Override
public String getValue(Times times) {
return Double.toString(times.getStart());
}
};
table.addColumn(startColumn, "Beginn");
// Add column to show the pause time.
TextColumn<Times> pauseColumn
= new TextColumn<Times>() {
@Override
public String getValue(Times times) {
return Integer.toString(times.getPause());
}
};
table.addColumn(pauseColumn, "Pause in Minuten");
// Add column to show the end time.
TextColumn<Times> endColumn
= new TextColumn<Times>() {
@Override
public String getValue(Times times) {
return Double.toString(times.getEnd());
}
};
table.addColumn(endColumn, "Ende");
//table panel
panel.setBorderWidth(1);
panel.setWidth("400");
panel.add(table);
panel.getElement().setId("mainTable");
// Add the widgets to the root panel.
RootPanel.get().add(panel);
}
});
public void createtimeline(){
//表和面板->全局创建
//加载->获取所有已预订的时间
serviceImplURL.getRpcDB().getBookedTimes(用户名,新的AsyncCallback(){
/**
*/
@凌驾
失败时的公共无效(可丢弃){
//TODO自动生成的方法存根
}
/**
*/
@凌驾
成功时的公共无效(ArrayList){
/**
*/
table.setRowCount(startList.size(),true);
表.setRowData(0,startList);
//添加列以显示开始时间。
text列startColumn
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Double.toString(times.getStart());
}
};
表.addColumn(startColumn,“Beginn”);
//添加列以显示暂停时间。
TextColumn pauseColumn
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Integer.toString(times.getPause());
}
};
表.addColumn(pauseColumn,“暂停分钟”);
//添加列以显示结束时间。
text列结束列
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Double.toString(times.getEnd());
}
};
表.添加栏(结束栏,“结束”);
//桌板
面板宽度(1);
面板设置宽度(“400”);
面板。添加(表);
panel.getElement().setId(“mainTable”);
//将小部件添加到根面板。
RootPanel.get().add(面板);
}
});
首先您必须更正代码。您只需要设置数据。对吗?因此无需反复创建表列来更改其中的数据
首先在rpc调用方法之外创建表结构。然后使用表的实例并在其中设置数据
您只需使用以下方法更新datalist
table.setRowCount(startList.size(), true);
table.setRowData(0, startList);
编辑:
private void initilaize()
{
// Add column to show the start time.
TextColumn<Times> startColumn
= new TextColumn<Times>() {
@Override
public String getValue(Times times) {
return Double.toString(times.getStart());
}
};
table.addColumn(startColumn, "Beginn");
// Add column to show the pause time.
TextColumn<Times> pauseColumn
= new TextColumn<Times>() {
@Override
public String getValue(Times times) {
return Integer.toString(times.getPause());
}
};
table.addColumn(pauseColumn, "Pause in Minuten");
// Add column to show the end time.
TextColumn<Times> endColumn
= new TextColumn<Times>() {
@Override
public String getValue(Times times) {
return Double.toString(times.getEnd());
}
};
table.addColumn(endColumn, "Ende");
//table panel
panel.setBorderWidth(1);
panel.setWidth("400");
panel.add(table);
panel.getElement().setId("mainTable");
// Add the widgets to the root panel.
RootPanel.get().add(panel);
}
public void createTimeTable(){
//Table and Panel -> created globally
//On Load -> get all times which are already booked
serviceImplURL.getRpcDB().getBookedTimes(username,
new AsyncCallback<ArrayList<Times>>() {
/**
*/
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
/**
*/
@Override
public void onSuccess(ArrayList<Times> startList) {
/**
*/
table.setRowCount(startList.size(), true);
table.setRowData(0, startList);
}
});
private void initilize()
{
//添加列以显示开始时间。
text列startColumn
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Double.toString(times.getStart());
}
};
表.addColumn(startColumn,“Beginn”);
//添加列以显示暂停时间。
TextColumn pauseColumn
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Integer.toString(times.getPause());
}
};
表.addColumn(pauseColumn,“暂停分钟”);
//添加列以显示结束时间。
text列结束列
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Double.toString(times.getEnd());
}
};
表.添加栏(结束栏,“结束”);
//桌板
面板宽度(1);
面板设置宽度(“400”);
面板。添加(表);
panel.getElement().setId(“mainTable”);
//将小部件添加到根面板。
RootPanel.get().add(面板);
}
公众假期时间表(){
//表和面板->全局创建
//加载->获取所有已预订的时间
serviceImplURL.getRpcDB().GetBookedTime(用户名,
新的AsyncCallback(){
/**
*/
@凌驾
失败时的公共无效(可丢弃){
//TODO自动生成的方法存根
}
/**
*/
@凌驾
成功时的公共无效(ArrayList){
/**
*/
table.setRowCount(startList.size(),true);
表.setRowData(0,startList);
}
});
此创建表方法仅用于获取时间一次…然后我有一个更新方法,当我单击按钮时会调用该方法。目前,我在更新方法中调用CreateThedule方法。但通常我只想更新表,不想再次创建表。像以前一样从数据库接收数据更新表,因为可能是数据被删除或