如何在wicket TreeTable的行中添加onclick选择?

时间:2011-05-04 19:23:37

标签: java ajax wicket

我正在使用TreeTable(来自wicket-extensions),我希望能够通过单击其中的任何位置来选择行,而不是通常单击一个单元格中的链接来选择行。我理解这可以通过向表示行的组件添加AjaxEventBehavior(“onclick”)来实现,但我似乎无法找到暴露行组件的任何方法。

1 个答案:

答案 0 :(得分:7)

之后我想出了一个解决方案。行元素位于populateTreeItem的{​​{1}}方法中。当您创建treetable时,请覆盖此方法,如下所示:

TreeTable

通常在向行添加行为时很有用。在我的情况下,我将不得不做一些更重要的事情来协调这种点击切换行为与应该扩展/收缩节点的点击以及链接点击。

在这些情况下再次切换选择会产生令人遗憾的效果,即短暂地切换节点进出不需要的状态,这是不理想的。相反,覆盖@Override protected void populateTreeItem(final WebMarkupContainer item, final int level) { super.populateTreeItem(item, level); item.add(new AjaxEventBehavior("onclick") { @Override protected void onEvent(final AjaxRequestTarget target) { final TreeNode node = ((TreeNode) item.getDefaultModelObject()); rowClickSelect(node); }); } }; onJunctionLinkClicked方法,在我们刚刚在onNodeLinkClicked中设置的onClick行为之前,点击事件会触及这些方法:

populateTreeItem

最后,添加方法@Override protected void onJunctionLinkClicked(final AjaxRequestTarget target, final TreeNode node) { super.onJunctionLinkClicked(target, node); skipNextRowClick(); } @Override protected void onNodeLinkClicked(final AjaxRequestTarget target, final TreeNode node) { super.onNodeLinkClicked(target, node); skipNextRowClick(); } skipNextRowClick

rowClickSelect