【问题标题】:Vaadin Table Item removal by click of button通过单击按钮删除 Vaadin 表项
【发布时间】:2014-01-02 14:10:06
【问题描述】:

我正在使用 Vaadin 7.1.7

我有一个表,其中有几个文本字段和一个名为“删除”的 Button

单击删除按钮后,将删除该特定行。

据我了解,我可以按如下方式删除表格项:

table.removeItem(itemID);

很遗憾,我无法获取该行的 itemID 以将其从表中删除。

既然我使用table.addItem(o, null); 来添加项目,我怎么能通过点击buttonClickListener 内的按钮获得rowID/itemID

到目前为止,我的尝试是:

@Override
public void buttonClick(ClickEvent event) {
Table t =  (Table) event.getButton().getParent();
}

这让我进入了父表,但没有进入那个特定的项目。

提前致谢 .

【问题讨论】:

    标签: java gwt vaadin vaadin7


    【解决方案1】:

    例如,您可以在创建按钮时使用setData(rowID)。 onClick 您检索按钮的关联数据并具有正确的行 id。

    【讨论】:

      【解决方案2】:

      提供一个行id,覆盖Button.ClickListener,并在点击监听器中使用该id。

      Object rowId = new Object();
      Button button = new Button("Delete");
      button.addClickListener(new RowDeleteListener(rowId));
      //populate cells in the row, add the button & whatever
      table.addItem(row, rowId);
      
      public class RowDeleteListener implements Button.ClickListener {
          Object rowId;
      
          public RowDeleteListener(Object rowId) {
              this.rowId = rowId;
          }    
      
          public void buttonClick(ClickEvent event) {
              table.removeItem(rowId);
          }
      }
      

      或者André Schild’s solution,也就是在按钮上使用setData(rowId)

      Button button = new Button("Delete");
      button.addClickListener(new Button.ClickListener() {
          public void buttonClick(ClickEvent event) {
              table.removeItem(getData());
          }
      });
      //Populate row stuff.
      button.setData(table.addItem(row, null));
      

      我更喜欢第一个解决方案,因为它更清楚发生了什么,还因为按钮在添加到表之前而不是之后具有正确的行 ID。

      或者,如果您想创建一些令人讨厌的东西:您可以使用 Button 对象作为行的 id。

      Button button = new Button("Delete");
      button.addClickListener(new Button.ClickListener() {
          public void buttonClick(ClickEvent event) {
              table.removeItem(this);
          }
      });
      //populate row stuff, including adding the button to the row.
      table.addItem(row, button);
      

      我没有测试或编译任何这些,所以......你知道......

      【讨论】:

        猜你喜欢
        • 2015-02-03
        • 1970-01-01
        • 2011-04-29
        • 2016-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-05
        • 2019-09-11
        相关资源
        最近更新 更多