java - GWT - 更新面板中的表

标签 java database gwt panel celltable

我有一个垂直面板,里面有一个表格。 OnModuleLoad 我从数据库获取数据并显示在表格中。单击按钮后,我想将列表框中的新数据添加到其中。它工作正常,但我不知道如何更新表格/面板。我现在所做的是创建一个新表来显示数据,但我无法删除第一个表。我是否必须将表格附加到面板上才能将其删除?实际上我不喜欢这个解决方案,这就是为什么我想知道是否有更新方法或其他东西。

创建表

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

            }               
        });

最佳答案

首先您必须更正您的代码。您只需要设置数据。正确的?因此无需一次又一次创建表来更改其中的数据。

首先在rpc调用方法之外创建表结构。然后使用表的实例并在其中设置数据。

您只需使用类似方法更新数据列表

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

                }               
            });

关于java - GWT - 更新面板中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15518522/

相关文章:

database - 在模块化/可插拔数据库支持的应用程序框架中进行测试

php - 将 Web 应用程序部署为独立的可执行文件

java - Hamcrest containsInAnyOrder 如果字符串包含则匹配

java - java的绘图API?

Java + Selenium session ID 为空。调用 quit() 后使用 WebDriver

java - JAVA如何连接wordpress数据库? (mysql)

java - 使用 Java 连接到远程 HBase 服务

MySql - 连接到外部数据库表

java - IE 8 中不一致的 GWT 行为

java - GWT 获取应用程序的路径