0

使用 GWT + GXT。是否可以通过例如消息框来更改活动的行编辑器状态?我创建了一个事件,它调用带有文本区域的消息框,为了将该文本区域中的文本放入网格中,我需要调用 rowEditor.stopEditing(true),然后手动将文本插入数据网格,然后执行 rowEditor.startEditing(true) . 所以它看起来像:

re.stopEditing(true);
List<Model> list = data.getModels();
list.get(activeRow).set("key","value");
re.startEditing(activeRow, true);

它可以工作......但是如果需要,用户不能取消他的更改,因为它们已经被 re.stopEditing(true); 保存了。

4

1 回答 1

0

听起来如果 stopEditing导致您不想要的状态更改(已保存的更改),并且没有其他 API 可以跳过该副作用,那么有一些潜在的选择(因为我不熟悉这个库,我将谈论一般模式):

  1. 不要在“真实”模型上调用它:使用克隆/副本完成所有工作,然后在提交更改时将更改保存到真实模型。
  2. 您可以在进行任何编辑之前存储模型的“原始”状态吗?那么无论通过多少次中间保存stopEditing,都可以通过恢复原始模型来实现取消操作。
  3. 如果这两个都不可能,还有一个更复杂的选项——查看源代码stopEditing——你可以扩展类来覆盖这个方法,删除不需要的功能吗?如果涉及大量私有变量,您始终可以通过反射将它们暴露给您的扩展,或者使您的扩展尽可能详细以涵盖更改。

希望其中之一能够适用于您的情况。

于 2014-02-10T07:18:37.163 回答