Eclipse Scout调用getDataByKey次数太多了

时间:2014-08-18 10:16:44

标签: drop-down-menu eclipse-scout

我有Table表格。这个表有一些智能领域。

我的问题是,当我在表中填充数据时(通过初始化),所有智能字段都会调用带有id的getDataByKey(它是正确的)但是它没有被调用一次我期望的但是30次。

我挖了一点回答,我发现这个函数被调用了很多次,因为在AbstractTable内的processDecorationBuffer内,所有调用m_cellLookupBuffer的表都有很多调用存储在里面(512个内置9)。

有没有人有同样的问题?

1 个答案:

答案 0 :(得分:0)

当你在表格中有一个SmartColumn时,scout需要进行查找"键 - >文本"对于每一行。如你所述,在某些情况下它可能很昂贵。这就是为什么还有一个额外的概念:BatchLookupCall / BatchLookupService。

我们的想法是首先收集所有行和所需的LookupCall并一次处理它们。

要回答你的问题,我必须设立一个小型游乐场项目。这里是我注意到的关键点:

您的密钥类型

Batch LookupCall检查调用的equals方法,该方法依赖于关键Object的相等性。如果您使用自定义类型作为密钥,请确保equals()hashCode()已正确实施。

在表格中添加行的方法

如果依次添加行,请执行以下操作:

Table table = getMyTableField().getTable();
ITableRow r;

r = table.addRow(table.createRow());
table.getTextColumn().setValue(r, "Lorem");
table.getMyColumn().setValue(r, 1L);

r = table.addRow(table.createRow());
table.getTextColumn().setValue(r, "Ipsum");
table.getMyColumn().setValue(r, 3L);

r = table.addRow(table.createRow());
table.getTextColumn().setValue(r, "Dolor");
table.getMyColumn().setValue(r, 1L);

r = table.addRow(table.createRow());
table.getTextColumn().setValue(r, "Figus");
table.getMyColumn().setValue(r, 4L);

Scout经常计算表格内容......我可以观察到对查询服务的过多调用。我认为这个领域有一些优化可能性。

如果您在一个步骤中导入所有行,则不会发生这种情况,例如使用FormData或TablePageData中包含的TableData