Page 1 sur 1
XPages -Vues

Publié:
08 Déc 2011 à 08:51
par Rubixcube
Bonjour,
J'ai une Xpages qui me sert pour la recherche documentaire.
Elle affiche dans une vue le résultat d'une recherche basée sur différents filtres.
En domino "classique" il existe un champs TotalHits dans les masques de type
$$SearchTelmplatedefault.
Comment accéder au nombre de ligne rapporté par la recherche en Xpages ?
Merci

Publié:
08 Déc 2011 à 10:07
par roubech
comment tu as fait ta recherche ?
tu as un datasource de type vue, sur laquelle tu as passé en argument tes filtres ?
et ensuite tu as un control repeat pour parcourir la collection ?
sur la collection, tu n'as pas un size ou un count ?

Publié:
08 Déc 2011 à 10:31
par Rubixcube
Je fais une recherche avec les scoped values telles que présenté dans la doc IBM.
Je construit la query avec la methode suivante :
- Code : Tout sélectionner
var tmpArray=new Array("");
var cTerms=0;
if(sessionScope.DepartementRecherche != null & sessionScope.DepartementRecherche !="" & sessionScope.DepartementRecherche !="-") {
tmpArray[cTerms++] = "(FIELD Sme_Departement = \"" + sessionScope.DepartementRecherche +"\")";
}
if(sessionScope.DebutRecherche != null & sessionScope.DebutRecherche !="") {
tmpArray[cTerms++] = "(FIELD Sme_DateEmission>=" + sessionScope.DebutRecherche + ")";
//tmpArray[cTerms++] = "(FIELD Sme_DateEmission<=17/07/2011)";
}
if(sessionScope.FinRecherche != null & sessionScope.FinRecherche !="") {
tmpArray[cTerms++] = "(FIELD Sme_DateEmission<=" + sessionScope.FinRecherche + ")";
}
qstring=tmpArray.join(" AND ").trim();
sessionScope.queryString=qstring;//affiche simplement la requête
return qstring// définit la propriété de recherche
je ne pense pas avoir de control Reapeat.
Merci pour ton aide
mes début en Xpages sont laborieux

Publié:
08 Déc 2011 à 13:54
par roubech
je débute également (que tes tests pour l'instant, pas encore d'applis réalisée)
OK, tu places ta requete dans ta sessionScope, mais ensuite, tu l'appliques comment ? Dans ta XPage, tu as définis une DataSource de type vue, dans laquella tu as utilisé sessionScope.queryString pour définir l'attribut search ? et, si tu n'as pas ajouté de controle Repeat, tu as surement ajouté un control View ?

Publié:
08 Déc 2011 à 14:04
par Rubixcube
Je l'applique avec un bouton submit dans une view.
Mais je n'ai pas trouvé dans les objets un quelconque "total" dans la vue.

Publié:
08 Déc 2011 à 22:10
par roubech
je ne sais pas de quel doc IBM tu parles. le doc en ligne ? un tuto sur le wiki ?
mais si je devais le faire, je commencerai par tester un truc du genre :
[syntax="xml"]<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.data>
<xp:dominoView var="view1" viewName="vue3"
search="#{javascript:sessionScope.queryString}">
</xp:dominoView>
</xp:this.data>
<xp:inputText id="inputText1"></xp:inputText>
<xp:button value="Rechercher" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<xp:executeScript
script="#{javascript:sessionScope.queryString=buildQuery();}">
</xp:executeScript>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:label value="Nb results: " id="label1"></xp:label>
<xp:text escape="true" id="computedField1"
value="#{javascript:view1.getAllEntries().getCount()}">
</xp:text>
<xp:viewPanel rows="30" value="#{view1}" id="viewPanel1">
<xp:this.facets>
<xp:pager partialRefresh="true" layout="Previous Group Next"
xp:key="headerPager" id="pager1">
</xp:pager>
</xp:this.facets>
</xp:viewPanel>
</xp:view>[/syntax]
mais bon, je commence à peine regarder les tuto et bricoller des trucs dans mon coin

Publié:
09 Déc 2011 à 08:50
par Rubixcube
Merci pour cette piste.
La doc IBM c'est "Tutoriel XPages Site Finder" de
http://publib.boulder.ibm.com/infocente ... /index.jsp

Publié:
14 Déc 2011 à 16:39
par Rubixcube
C'était finalement assez simple en suivant la piste de roubech
dans un computedField
var vec:NotesViewEntryCollection = database.getView("vue").getAllEntries();
vec.FTSearch(sessionScope.queryString, 0);
return vec.getCount();

Publié:
14 Déc 2011 à 21:52
par roubech
tu fais la recherche 2 fois et ce à chaque fois que tu changes de page ?
tu ne peux pas appliquer le filtre sur la datasource et ensuite compter le nombre d'élément de la datasource ?