2013-12-09 40 views
2

我需要獲取用戶點擊哪個行號來處理我的數據庫操作。如何在Vaadin表中點擊行號?

try { 
     for (int i = 1; i < dbManager.getLastTopicId() + 1; i++) { 

      Integer itemId = new Integer(i); 
      String topicTitle = dbManager.getTitle(Integer.toString(i)); 
      String topicText = dbManager.getText(Integer.toString(i)); 
      String topicAuthor = dbManager.getAuthor(Integer.toString(i)); 

      topicList.addItem(new Object[] {topicTitle, topicText, topicAuthor}, 
        itemId); 
     } 
    } catch (UnsupportedOperationException e) { 
     e.printStackTrace(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

這裏我加載數據到topicList表。 我也使用topicList.addValueChangeListener(new Property.ValueChangeListener() { public void valueChange(ValueChangeEvent event) 要處理用戶點擊。但是我需要從Listener那裏得到用戶點擊的行號。我已經嘗試topicList.getValue()和東西,但他們沒有返回我行號。 謝謝

回答

5

讀取ID,您就可以通過添加一個ValueChangeListener或讓你的行ID ItemClickListener。 注意:ItemClickListener不響應鍵盤向上或向下箭頭,只有ValueChangeListener會響應。

通過EventObject,您可以訪問項目標識。

Table table = new Table(); 
table.setImmediate(true); 
table.setSelectable(true); 
table.addListener(new ValueChangeListener() { // With ValueChangeListener respons to keyboard input as well 

    public void valueChange(ValueChangeEvent event) { 
     getMainWindow().showNotification("ValueChange: ItemId: " + event.getProperty().getValue()); 
    } 
}); 
table.addListener(new ItemClickListener() { // With ItemClickListener 

    public void itemClick(ItemClickEvent event) { 
     getMainWindow().showNotification("ItemClick: ItemId" + event.getItemId()); 
    } 
}); 

在Vaadin7方法的名稱已更改爲:

table.addValueChangeListener(); 
table.addItemClickListener(); 
+0

注:如果一個表有多種選擇啓用,則值變化可以/將是一個集合。 – Basil

1

如果您只想跟蹤點擊次數,您可以使用addItemClickListener()ItemClickListener添加到表格中。看到這個answer

如果你想讀表的價值,可能與多選,你可以使用ValueChangeListener因爲你已經做的和與getValue()