2013-10-24 28 views
1

我有一个表绑定到SQLContainer和插入按钮(即插入在表中的行)Vaadin table.select(的itemId)不工作

当点击了按钮,它执行的下面的代码听众:

Object itemId = table.addItem(); 
container.getContainerProperty(itemId, "cedula").setValue(cedulaS); 

try { 
    container.commit(); 
    table.select(itemId); 
catch (UnsupportedOperationException e) { //bla } 

该行已正确插入,但我希望自动选择行,但选择方法不工作任何想法?

编辑:

的选择(项目Id)正在其选择该行,但由于某种原因,行提交作出这样的选择(项目Id)didnt工作。我认为是因为itemId是一个临时行,所以当commit被执行时它会消失或丢失它的值。

+0

你实施了hash()/ equal()方法吗? – nexus

+0

看起来像提交刷新表的客户端和此刷新覆盖选择方法。要检查 - 添加单独的按钮布局和添加/提交项目后,onClick调用table.select(itemId); 如果选择将起作用,请尝试向表或容器添加一些ItemSetChangeListener,并从containerItemSetChange方法中选择项目。 –

回答

1

这个讨论有答案,感谢@Teppo KURKI

https://vaadin.com/forum#!/thread/4268146

的问题是,是的itemId时间行ID所以当执行提交IY改变行ID,所以它必须是执行下面的听众:

container.addRowIdChangeListener(new QueryDelegate.RowIdChangeListener() { 
    void rowIdChange(QueryDelegate.RowIdChangeEvent event) { 
     table.select(event.getNewRowId()); 
    } 
}); 

蚂蚁,我们现在可以删除table.select(的itemId);在最初的帖子

+0

不错!对于bean容器它是一样的吗?因为我有同样的问题 – natso