在一种形式中我有系统OK按钮:
@Order(910.0)
public class SaveButton extends AbstractOkButton {
@Override
protected String getConfiguredLabel() {
return TEXTS.get("Save");
}
}
我有tableField ...
如果我在此表中添加新的空行,则在按下保存按钮时调用execStore
,但是如果我删除此空行并按下保存按钮,则不会调用任何内容,仅按钮关闭表单。
如何解决这个问题?我希望能够删除空行。
我弄清楚所有只填写智能字段的行,在删除时它不会检测到更改。 (不仅是空行...)
问题是表单的checkSaveNeeded
返回doOk
方法中没有任何更改。
答案 0 :(得分:0)
如何添加行?
您可以将行标记为是否已插入。请参阅表格中的addRow(newRow, markAsInserted);
。
你的第二个问题是“表格字段如何计算表格是否需要存储”?
您可以使用execIsSaveNeeded()
实现自定义逻辑。在Scout论坛上看到这个问题:
https://www.eclipse.org/forums/index.php?t=msg&th=477037&goto=1042295#msg_1042295
您的最后一点是:当一行在可编辑表格中具有状态ITableHolder.STATUS_NON_CHANGED
时。使用SmartColumn
更改SmartField
中的值时,该行的状态不会更改为ITableHolder.STATUS_UPDATED
。
我刚试过它,它按预期工作。
对于行删除,它取决于您的表字段的配置方式。属性isAutoDiscardOnDelete()
的价值是多少。
此处的文档仍适用于Neon:Table > Delete a row from the table
isAutoDiscardOnDelete()
返回true
(如果getConfiguredAutoDiscardOnDelete()
返回true
就是这种情况),当您删除表字段中的行时,它将被丢弃。没有什么可以保存的,因为表格字段中没有删除的行(在我提到的wiki部分中解释了所有内容)
如果要在服务器上持久删除,则不应使用丢弃该行但只删除它。通过这种方式,您可以获取FormData中的信息,然后您可以使用此处所述的行状态:TableData(同样来自我们wiki的旧文档,因为它可以像今年一样工作。这对于Neon来说并不新鲜)。