0

我遇到了非常奇怪的行为,我不知道这是故意的还是侦察兵内部的错误。(我可以理解为什么这可能是一个功能,但是我需要一些解决方法......)

我有一些表格里面的表格。假设我有两列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

像上一个(已删除)行一样保留在表单数据中。

我知道将已创建的行更新为当前值比替换所有行更快,但不应该 getRowCount返回正确的数字?

4

1 回答 1

1

如果我正确理解您的问题,您想知道为什么已删除的行保留在表中以及这如何影响行数。

首先:Eclipse Scout 有两种方法可以处理已删除的行:

  1. “回收站模式”,其中删除的行只是将其行状态 ( ITableRow.getRowState()) 更改为ITableRow.STATUS_DELETED. 您可以使用它来将表的所有行发送到服务,并轻松查看哪些行被删除并保留这些更改。(与您查看插入/更改了哪些行的方式相同)。如果您的用户添加/修改/删除多行并且更改仅在“保存操作”(确定按钮或类似按钮)上保留,则通常使用此模式。
  2. “立即删除模式”,其中行在被删除时立即被丢弃。您以后无法再次从侦察模型中检索这些丢弃的行。通常用于当您在表格页面中操作时,用户的任何更改都将立即应用。

您可以通过覆盖在这两种模式之间切换AbstractTable.getConfiguredAutoDiscardOnDelete()。默认返回值为false“模式 1”,true会将您置于“模式 2”并指示 scout 立即丢弃任何已删除的行。

要解决问题的行数/索引部分:

如果您删除行并且不丢弃它们(模式 1),您将需要考虑这些对用户不可见的行。行数将包括那些已删除的不可见行!

来源: Eclipse Scout Concept Wiki:Table - 从表中删除一行

于 2015-10-27T12:34:01.860 回答