我遇到了非常奇怪的行为,我不知道这是故意还是侦察中的错误。 (我可以理解为什么这可能是一个功能,但后来我需要一些解决方法...)
我在表格中有一些表格。假设我有两列Column A
和Column B
,我有两行。
------------------------
| Column A | Column B |
------------------------
| 10 | 20 |
------------------------
| 30 | 40 |
------------------------
如果我像这样检查客户最后一行:
getTField().getTable().getAColumn().getValue(getTField().getTable().getRowCount() -1) = 30
final TFormData formData = new TFormData();
this.exportFormData(formData);
formData.getTable().getAColumn(formData.getTable().getRowCount() - 1) = 30
这没关系。现在我更新最后一行并删除第一行所以现在它看起来像这样:
------------------------
| Column A | Column B |
------------------------
| 60 | 40 |
------------------------
现在如果我像以前一样尝试:
// row count = 1
getTField().getTable().getAColumn().getValue(getTField().getTable().getRowCount() -1) = 60
final TFormData formData = new TFormData();
this.exportFormData(formData);
// row count = 2
formData.getTable().getAColumn(formData.getTable().getRowCount() - 1) = 30
formData.getTable().getAColumn(formData.getTable().getRowCount() - 2) = 60
就像之前(已删除)行保留在表单数据中一样。
我了解只是将已创建的行更新为当前值更快然后替换所有行但不应该{0}返回正确的数字?
答案 0 :(得分:1)
如果我理解你的问题,你想知道为什么删除的行留在表中以及它如何影响行数。
首先:Eclipse Scout有两种方法可以处理已删除的行:
ITableRow.getRowState()
)更改为ITableRow.STATUS_DELETED
。您可以使用它将表的所有行发送到服务,并轻松查看已删除的行并保留这些更改。 (与您可以看到插入/更改了哪些行的方式相同)。如果您的用户添加/修改/删除多行,并且仅在“保存操作”上保留更改,则通常会使用此模式。 (确定按钮或类似)。您可以通过覆盖AbstractTable.getConfiguredAutoDiscardOnDelete()
来切换这两种模式。默认返回值为false
,即"模式1",true
会使您进入"模式2"并指示侦察员立即丢弃任何已删除的行。
要解决问题的行数/索引部分:
如果删除行并且不丢弃它们(模式1),则需要考虑用户不可见的这些行。行计数将包括那些已删除的不可见行!
来源: Eclipse Scout Concept Wiki: Table - Delete a row from the table