单元格表-添加额外的行



输入代码这里我有一个单元格和列包含一些数字。我想在表的末尾添加一个额外的行,它将保存每列的总数。有什么办法可以做到吗?

下面是我的代码:
   import java.util.*;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.view.client.ListDataProvider;
public class TestProject implements EntryPoint 
{
 private static int totalSalary=0;
 private static class Contact 
 {
        private final String salary;
        private final String name;
        public Contact(String name, String salary) 
        {
          this.name = name;
          this.salary = salary;
        }
 }
private static List<Contact> CONTACTS = Arrays.asList(new Contact("John","100000"), 
                                                      new Contact("Mary", "200000"), 
                                                      new Contact("Zander", "300000"));
/**
 * This is the entry point method.
 */
public void onModuleLoad() 
{
    final CellTable<Contact> table = new CellTable<Contact>();
    // Create name column.
    TextColumn<Contact> nameColumn = new TextColumn<Contact>() 
    {
      @Override
      public String getValue(Contact contact) 
      {
        return contact.name;
      }
    };
    // Create address column.
    TextColumn<Contact> addressColumn = new TextColumn<Contact>() 
    {
      @Override
      public String getValue(Contact contact) 
      {
        totalSalary+=Integer.parseInt(contact.salary);
        return contact.salary;
      }
    };
    // Add the columns.
    table.addColumn(nameColumn, "Name");
    table.addColumn(addressColumn, "Salary");
    // Create a data provider.
    ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>();
    // Connect the table to the data provider.
    dataProvider.addDataDisplay(table);
    // Add the data to the data provider, which automatically pushes it to the
    // widget.
    final List<Contact> list = dataProvider.getList();
    for (Contact contact : CONTACTS) {
      list.add(contact);
    }
    // We know that the data is sorted alphabetically by default.
    table.getColumnSortList().push(nameColumn);
    Contact total = new Contact("Total: ",totalSalary+"");
    list.add(total);

    // Add it to the root panel.
    RootPanel.get().add(table);
    //RootPanel.get().add(add);
}

}

我还建议您在添加列时使用footer-Argument:addColumn(Column col, Header Header)

当你的意思是总数我不太确定你的意思,但这是类似于你的代码,但我已经添加了一个按钮,将添加行,但你可以拿出这个,只是添加行。

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class TestGwt implements EntryPoint {
     private static class Contact {
            private final String address;
            private final String name;
            public Contact(String name, String address) {
              this.name = name;
              this.address = address;
            }
          }
    private static List<Contact> CONTACTS = Arrays.asList(new Contact("John",
    "123 Fourth Road"), new Contact("Mary", "222 Lancer Lane"), new Contact(
    "Zander", "94 Road Street"));
    /**
     * This is the entry point method.
     */
    public void onModuleLoad() {
         // Create a CellTable.
        final CellTable<Contact> table = new CellTable<Contact>();
        // Create name column.
        TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
          @Override
          public String getValue(Contact contact) {
            return contact.name;
          }
        };
        // Make the name column sortable.
        nameColumn.setSortable(true);
        // Create address column.
        TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
          @Override
          public String getValue(Contact contact) {
            return contact.address;
          }
        };
        // Add the columns.
        table.addColumn(nameColumn, "Name");
        table.addColumn(addressColumn, "Address");
        // Create a data provider.
        ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>();
        // Connect the table to the data provider.
        dataProvider.addDataDisplay(table);
        // Add the data to the data provider, which automatically pushes it to the
        // widget.
        final List<Contact> list = dataProvider.getList();
        for (Contact contact : CONTACTS) {
          list.add(contact);
        }
        // We know that the data is sorted alphabetically by default.
        table.getColumnSortList().push(nameColumn);
        Button add = new Button("Add Row");
        add.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                list.add(new Contact(Integer.toString(table.getRowCount()),Integer.toString(table.getRowCount())));
            }
        });

        // Add it to the root panel.
        RootPanel.get().add(table);
        RootPanel.get().add(add);
      }

}

希望这将有助于我不确定你是什么意思,虽然任何东西都可以添加到最后的字段在一个联系的幌子,即使它不是一个,更好的方法是使用泛型的数据提供程序,但这将达到相同的效果与最少的代码

public void addNewRow(){                
    List<Contact> newContactLst = Arrays.asList(new Contact("TEST",
              "Sample"));
    int numRows = table.getRowCount();
    table.setRowCount(numRows+1);
    table.setRowData(numRows,newContactLst);
}

相关内容

  • 没有找到相关文章