Java 如何从GWT中的动态FlexTable中获取行值?
我试图开发一个应用程序,用jdbc从数据库动态创建一个flex表。我想实现两种方法,一种是更新行值,另一种是通过每行插入两个按钮来删除当前行。问题是我无法获取当前行的值 创建FlexTable的FishTable方法Java 如何从GWT中的动态FlexTable中获取行值?,java,gwt,flextable,Java,Gwt,Flextable,我试图开发一个应用程序,用jdbc从数据库动态创建一个flex表。我想实现两种方法,一种是更新行值,另一种是通过每行插入两个按钮来删除当前行。问题是我无法获取当前行的值 创建FlexTable的FishTable方法 public void FishTable(){ if(service == null){ service = GWT.create(Service.class); } service.getFishes(FishTableCallBac
public void FishTable(){
if(service == null){
service = GWT.create(Service.class);
}
service.getFishes(FishTableCallBack);
}
AsyncCallback FishTableCallBack=新建AsyncCallback(){
@覆盖
失败时的公共无效(可丢弃){
String details=catch.getMessage();
系统输出打印项次(详细信息);
}
@凌驾
成功时的公共无效(FishTable结果){
table.removeAllRows();
tablePanel.clear();
表.setText(0,0,“id”);
表2.setText(0,1,“鱼”);
表1.setText(0,2,“价格”);
表1.设置单元填充(6);
table.getCellFormatter().addStyleName(0,0,“header1_3”);
table.getCellFormatter().addStyleName(0,1,“header2”);
table.getCellFormatter().addStyleName(0,2,“header1_3”);
tablePanel.add(表);
for(int i=0;i
updateBtn处理程序中的代码不起作用,我从最后一行获取值。我尝试了index=table.getCellForEvent(event).getRowIndex()-1来获取当前行,但无法在updateBtn处理程序中获取列0的值。我想将这些值发送到数据库。那么,如何从单击这些按钮的行中获取值呢
UpdateFish和DeleteFish方法:
public void DeleteFish(String id){
if(service == null){
service = GWT.create(Service.class);
}
service.deleteFish(id, deleteFishCallBack);
}
public void UpdateFish(String fishId , String fishName , String fishPrice){
if(service == null){
service = GWT.create(Service.class);
}
service.updateFish(fishId , fishName , fishPrice , updateFishCallBack);
}
AsyncCallback<DeleteFish> deleteFishCallBack = new AsyncCallback<DeleteFish>() {
@Override
public void onSuccess(DeleteFish result) {
FishTable();
}
@Override
public void onFailure(Throwable caught) {
String details = caught.getMessage();
System.out.println(details);
}
};
AsyncCallback<UpdateFish> updateFishCallBack = new AsyncCallback<UpdateFish>() {
@Override
public void onSuccess(UpdateFish result) {
FishTable();
}
@Override
public void onFailure(Throwable caught) {
String details = caught.getMessage();
System.out.println(details);
}
};
public void DeleteFish(字符串id){
if(服务==null){
service=GWT.create(service.class);
}
service.deleteFish(id,deleteFishCallBack);
}
public void UpdateFish(字符串fishId、字符串fishName、字符串fishPrice){
if(服务==null){
service=GWT.create(service.class);
}
updateFish(fishId、fishName、fishPrice、updateFishCallBack);
}
AsyncCallback deleteFishCallBack=新建AsyncCallback(){
@凌驾
成功时公共无效(DeleteFish结果){
FishTable();
}
@凌驾
失败时的公共无效(可丢弃){
String details=catch.getMessage();
系统输出打印项次(详细信息);
}
};
AsyncCallback updateFishCallBack=新建AsyncCallback(){
@凌驾
成功时的公共void(UpdateFish结果){
FishTable();
}
@凌驾
失败时的公共无效(可丢弃){
String details=catch.getMessage();
系统输出打印项次(详细信息);
}
};
更换
int row = table.getRowCount();
与
然后呢
deleteBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
TextBox tb = (TextBox) table.getWidget(row - 1, 0);
DeleteFish(tb.getText());
}
});
它不起作用。我认为table.getText()方法有问题,因为我试图打印这个值,但它什么也不打印。我还将此行更改为DeleteFish(table.getText(row-1,0));因为我想要第一列。您正在将TextBox小部件放入FlexTable中。因此,您必须使用getWidget将文本框取回。然后在文本框中使用getText------用这些更改更新了我的答案
final int row = table.getRowCount();
deleteBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
TextBox tb = (TextBox) table.getWidget(row - 1, 0);
DeleteFish(tb.getText());
}
});