2012-05-25 6 views
5

Meine XPage verfügt über eine Datenquelle mit einer Suchformel ("Search in view results"), die aus URL-Parametern erstellt wurde.Einträge in der XPages-Ansicht zählen

Die Suchergebnisse werden in einem Wiederholungssteuerelement angezeigt, das sich in einem Bereich befindet. Ich möchte dieses Fenster ausblenden, wenn keine Suchergebnisse angezeigt werden, und stattdessen eine entsprechende Nachricht anzeigen.

Die Platte ist sichtbar, basierend auf den folgenden Code:

var vec:NotesViewEntryCollection = view1.getAllEntries(); 
vec.getCount() != 0; 

aber es scheint, dass getAllEntries alle Einträge in der Ansicht zurück, bevor die Filterung stattfindet. Die Hilfe für AllEntries sagt "Wenn eine Ansicht von FTSearch gefiltert wird, gibt diese Eigenschaft die Einträge in der gefilterten Ansicht zurück."

Habe ich das falsch verstanden? Gibt es eine Möglichkeit, die Anzahl der Einträge NACH dem Filtern zu erhalten?

+1

Warum verwenden Sie nicht den Index Ihrer Wiederholungskontrolle zum Zählen der Einträge. – Ramkumar

Antwort

15

Wenn Sie über SSJS auf die DominoView-Datenquelle zugreifen, erhalten Sie nicht das DominoView, sondern das dazugehörige NotesView. Aus diesem Grund sind die verfügbaren Eigenschaften und Methoden für die NotesView-Klasse verfügbar. Die Suche wird jedoch am Frontend der DominoView-Datenquelle und nicht am zugeordneten NotesView-Objekt durchgeführt.

Anstatt die Datenquelle zu verwenden, rufen Sie das Steuerelement ab, das sie verwendet (z. B. A repeat, viewPanel usw.), und verwenden Sie die Methode getRowCount(). Dies wird Ihnen die richtige Summe geben. Z.B.

getComponent("repeat1").getRowCount() 
+0

Das hat es sortiert. Danke, Paul. –

+0

Das würde ich auch gerne machen. Aber es funktioniert nicht, wenn ich einen Pager an meine Wiederholung angehängt habe; Ich erhalte nur die Anzahl der Elemente auf der aktuellen Seite und nicht die Anzahl aller gefilterten Ansichtselemente. Gibt es einen Weg, dies in diesem Fall zu tun ...? –

0

die Ansicht Caption-Eigenschaft verwenden ....

Beispiel: "30 von 30220 angezeigt"

<xp:this.caption><![CDATA[#{javascript:return "Displaying " + getComponent("viewPanel1").getRowCount() + " of " + view1.getAllEntries().getCount();}]]></xp:this.caption> 

HINWEIS: Diese zählt die auch kategorisiert Reihe.