如何在Vaadin的表格中点击行号?

时间:2013-12-09 07:21:24

标签: 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()和东西,但是没有他们返回我的行号。 感谢

2 个答案:

答案 0 :(得分:5)

您可以通过添加ValueChangeListenerItemClickListener来获取您的行ID。 注意:ItemClickListener不会响应键盘向上箭头或向下箭头,只有ValueChangeListener会响应。

使用EventObject,您可以访问项目ID。

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

答案 1 :(得分:1)

如果您只想跟踪点击次数,可以使用addItemClickListener()向表格添加ItemClickListener。见answer

如果您想阅读表的值,也许使用多选,您可以使用ValueChangeListener,并使用getValue()

阅读ID