对于GWT来说我还很陌生,但是到目前为止我一直都在快速进步。
我有一个单元格表,其中大多数是从RPC返回的只读数据。
我在单元格表中有两列可供用户交互。一个是TextInputCell,一个是ButtonCell。
当用户单击ButtonCell时,我想将该行的TextInputCell中的值发送到RPC。
我有所有的工作。
我无法使用的部分是,当单击按钮(ButtonCell)时,我想禁用该行中的按钮,直到RPC返回,然后重新启用它。我还想在RPC返回时清除该行的输入单元格中的文本。
我无法弄清楚如何获取已单击的实际ButtonCell对象的句柄或TextInputCell来处理它们。
任何帮助表示赞赏。
q
最佳答案
问题是单击的按钮没有对象。您的ButtonCell将创建呈现按钮的HTML-整列中的每个按钮都是由相同的按钮单元编写的,但是没有与之关联的Java对象。
要直接禁用该按钮,您必须首先为其创建一个句柄。您可以通过在ButtonCell创建的html中呈现一个id,然后从DOM中按id获取元素来做到这一点。
在类似情况下,我要做的就是在状态更改时重新渲染整个表。不需要那么长时间,并且您不需要存储任何引用(总的原因是您使用CellTable而不是Grid)。当您知道应该禁用按钮时,只需将其变为禁用状态即可。
这两个建议都要求您将Cell对象子类化,以便可以进行一些自定义渲染。这不是很困难,但是将头围在操作顺序上可能会造成混淆。祝你好运!
PS:如果您只想禁用按钮(而不是清空文本字段),我认为onBrowserEvent为您提供了所单击的Element
的句柄-您也许可以使用该句柄来禁用它。