2013-08-18 15 views
6

İki seçenekten en etkili olan bir kontrolün değerine erişmem gerekiyor mu?Bir kontrolün değerine erişmenin en etkili yolu hangisidir?

getComponent("ControlName").getValue(); 

veya

dataSource.getItemValue("FieldName"); 

O vesileyle getComponent akım değeri döndürmek görünmüyor bulabilirsiniz, ancak dataSource erişen daha güvenilir gibi görünüyor. Peki, kullanılan bir performans perspektifinden çok farklı mıdır?

VeriSource.getValue, denediğim her yerde çalışır gibi görünüyor. Ancak, rowData ile çalışırken hala bir rowData.getColumnValue ("Something") yapmam gerekiyor gibi görünüyor. rowData.getValue ("Something") başarısız.

+0

Bileşen vs datasource'dan aldığınız değer türünde farklılıklar da olabilir. –

cevap

17

Hiçbiri. En hızlı sözdizimi dataSource.getValue ("FieldName"). getItemValue yöntemi, yalnızca belge veri kaynağında güvenilirdir, getValue yöntemi, yalnızca bir görünüm veri kaynağı yoluyla erişilen görünüm girişlerinde de mevcut değildir (bu bağlamda, bir görünüm sütununun programatik adını geçmese de, zorunlu olarak bir alan ile aynı isim), ancak geliştirdiğiniz veya yüklediğiniz herhangi bir özel veri kaynağında da (örneğin, üçüncü taraf uzantı kitaplıkları) kullanılabilir. Dahası, bunun yerine getItemValue'u kullandıysanız kendiniz yapmak zorunda olduğunuz otomatik tip dönüşümü yapar. Fredrik bahseder gibi, ilk önce bileşeni bulmak ve sonra da değerinin ne sormak zorundadır çünkü Hatta çok basit sayfalarda

, dataSource.getValue ("FieldName") ... olabildiğince hızlı getComponent ("id").getValue() olarak 5 kat olan arkasında Sahneler, sadece veri kaynağını soruyor. Bu yüzden, sadece veri kaynağını kendiniz sormak daha hızlı olacaktır. Not 10: ilgili yazma yöntemi, dataSource.replaceItemValue ("FieldName", "NewValue") değil, dataSource.setValue ("FieldName", "NewValue")'dur (dataSource.setValue ("FieldName", "NewValue")). Her ikisi de işe yarayacaktır, ancak setValue, aynı tip dönüşümü de yapar. getValue, eski Domino Java API'sine tam olarak uymayan verileri iletebilir ve genellikle sırayla değerin dönüştürülmesi için gereken değeri belirler. Domino'nun depolanması için "güvenli" olmak.

+0

Teşekkürler, bu tür bir arama yaptığımı bildiğim bir XPage var. Şimdi kodlara geri dönüp bunları kullandığım tüm yerleri bul ve değiştir. Bu, gelecekte referans ve hatırlatma için hile sayfası belgesine kopyaladığım bir gönderi. Çoğu zaman en belirgin yöntem en iyi yöntemden uzaktır. –

+0

İşte bir takip. Yinelenen bir denetimde, bir dataField'ı rowData'da fieled'e bağlayarak rowData'dan değerleri görüntüler. Bir rowData.getValue daha hızlı olacağını tahmin ediyorum? –

+0

Ah - geliştirme için çok değerli (amaçlanan) en iyi uygulama: asla destek elemanından/şeylerden sonra gidip, veri kaynağına yapışmayın. – stwissel

4

Bunun en etkili yolun değeri doğrudan veri kaynağından elde etmektir. Çünkü getComponent ("ControlName") kullanırsanız getValue(); Önce bileşen ve daha sonra bir getValue olsun. Bana sorarsanız veri kaynağından tek bir getiri daha verimli olur.

İlgili konular