我正在使用TreeTable(來自wicket-extensions),我希望能夠通過單擊其中的任何位置來選擇一行,而不是點擊一個單元格中的鏈接來選擇行。我知道這應該是可能的通過添加一個AjaxEventBehavior(「onclick」)到代表行的組件,但我似乎無法找到行組件暴露的任何方法。如何將onclick選擇添加到wicket TreeTable的行?
4
A
回答
7
我想出了一個解決方案後。行元素可從TreeTable
的populateTreeItem
方法中獲得。在創建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
方法,這將是一個click事件被觸摸它到達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
:
/**
* Ensure the next call to rowClickSelect() will have no effect.
*/
private void skipNextRowClick() {
this.skipNextClickSelect = true;
}
private void rowClickSelect(final TreeNode node) {
if (this.skipNextClickSelect) {
this.skipNextClickSelect = false;
return;
}
// select on click row
final boolean isSelected = Log4jPanel.this.treeTable.getTreeState().isNodeSelected(node);
treeTable.getTreeState().selectNode(node, !isSelected);
}
相關問題
- 1. Wicket 6.13鏈接onclick行爲不工作與ajax onclick行選擇
- 2. 添加選擇/取消選擇所有複選框到Wicket DataTable
- 3. 如何將$變量添加到onclick =「location.href ='
- 4. 如何將空的非選擇行添加到slickgrid?
- 5. 將選擇添加到Combobox
- 6. 如何將onclick添加到android
- 7. 如何將Onclick添加到Wheel菜單?
- 8. 如何將OnClick事件添加到TCustomControl?
- 9. 將onclick事件添加到動態添加的單選按鈕
- 10. 如何選擇數據並將其添加到特定行?
- 11. Wicket:選擇多行(Shift-Click)
- 12. 如何將「onclick」添加到單選按鈕?
- 13. 如何將jquery onclick事件添加到asp單選按鈕?
- 14. 將onClick添加到RecyclerView Android
- 15. 如何將文本添加到選擇框的某些選項?
- 16. 如何將說明添加到HTML選擇框中的選項?
- 17. 如何將新選項添加到jQuery中的選擇?
- 18. 如何將行選擇設置爲新添加的行?
- 19. 將onclick添加到CSS類
- 20. 如何將行爲添加到另一個組件中另一個行爲添加到該組件的Wicket
- 21. 將Onclick listner添加到android
- 22. 將CSS資源添加到Wicket Web App
- 23. 將選項添加到CodeIgniter中選擇
- 24. 如何控制wicket將項目添加到標題的位置?
- 25. 如何將選擇菜單選項添加到使用javascript的多個選擇
- 26. JavaFX 8 - 添加組件到TreeTable單元
- 27. 將選擇的記錄添加到表
- 28. 將選擇器添加到我的iframe
- 29. 如何使用JavaScript將選項添加到選擇標記?
- 30. 如何將選擇添加到主題選項