6

在两个选择中,我必须访问最有效的控件的值?

getComponent("ControlName").getValue();

或者

dataSource.getItemValue("FieldName");

我发现有时getComponent似乎没有返回当前值,但访问dataSource似乎更可靠。那么从性能的角度来看,使用哪一个有很大的不同吗?

dataSource.getValue 似乎在我尝试过的任何地方都可以使用。但是,在使用 rowData 时,我似乎仍然需要执行 rowData.getColumnValue("Something")。rowData.getValue("Something") 失败。

4

2 回答 2

17

两者都不。最快的语法是dataSource.getValue ("FieldName"). 该getItemValue方法仅在文档数据源上可靠,而该getValue方法不仅在通过视图数据源访问的视图条目上也可用(尽管在这种情况下,您可以将视图列的编程名称传递给它,这不一定是与字段同名),但也可用于您开发或安装的任何自定义数据源(例如第三方扩展库)。此外,它会自动进行类型转换,如果您使用它,您必须自己进行getItemValue

即使在非常简单的页面上,dataSource.getValue ("FieldName")速度也是 5 倍getComponent ("id").getValue (),因为正如 Fredrik 所提到的,首先它必须找到组件,然后询问它的值是什么......在幕后,无论如何,它只是询问数据源. 因此,自己询问数据源总是会更快。

注意:对应的写方法是dataSource.setValue ("FieldName", "NewValue"),不是dataSource.replaceItemValue ("FieldName", "NewValue")。两者都可以工作,但setValue也会进行相同的类型转换getValue,因此您可以传递不严格符合旧 Domino Java API 的数据,它通常只是找出需要转换为的值才能成为Domino 存储的“安全”。

于 2013-08-19T07:40:21.897 回答
4

我想说最有效的方法是直接从数据源中获取值。因为如果你使用 getComponent("ControlName").getValue(); 您将首先获取组件,然后从中获取 getValue。因此,如果您问我,从数据源获取一次会更有效。

于 2013-08-19T06:55:35.607 回答