我有2个包含保存和取消按钮的smartGWT buttonLayouts。一个位于UI顶部,另一个位于底部以方便使用,因此用户无需向上/向下滚动以保存/取消表单。
当用户在任一地方选择保存/取消时,应禁用所有按钮,直到后台操作完成。
处理此问题的最佳方法是什么?
如果我这样做:
private Layout buildTopButtonBar() {
saveButton = new Button("Save");
saveButton.addClickHandler( ... );
buttonLayout.addMember(saveButton);
}
private Layout buildBottomButtonBar() {
saveButton = new Button("Save");
saveButton.addClickHandler( ... );
buttonLayout.addMember(saveButton);
}
我的clickHandler中的saveButton操作(当用户选择save时,应禁用saveButton)仅对底栏中的按钮执行,但所有其他后台操作都有效。
如果我这样做:
saveButton = new Button("Save");
saveButton.addClickHandler( ... );
buildTopButtonBar(); // adds saveButton to top bar
buildBottomButtonBar(); // adds saveButton to bottom bar
仅显示底栏。
我可以创建4个单独的按钮:
topSaveButton = new Button("Save");
bottomSaveButton = new Button("Save");
... // add all required functionality and clickHandlers
但这只是感觉邪恶。 我还有其他选择吗? 这是smartGWT 4。
答案 0 :(得分:1)
您无法重复使用小部件实例。
Button saveButton = new Button("Save");
// some more code
saveButton.addClickHandler( ... );
buildTopButtonBar(); // adds saveButton to top bar
buildBottomButtonBar(); // adds saveButton to bottom bar
;
不起作用。
Button topSaveButton = new Button("Save");
Button bottomSaveButton = new Button("Save");
... // add all required functionality and clickHandlers
会奏效。
每个小部件代表DOM树中的一个节点。您可以通过调用getElement()
来访问该节点。再次添加按钮将删除顶部的按钮并将其添加到底部。
如果顶部和末尾有一个保存按钮,则需要两个实例。