XPages -Vues

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

XPages -Vues

Messagepar Rubixcube » 08 Déc 2011 à 08:51

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
Dernière édition par Rubixcube le 14 Déc 2011 à 16:38, édité 1 fois.
Rubixcube
Posteur néophyte
Posteur néophyte
 
Message(s) : 79
Inscrit(e) le : 21 Oct 2010 à 13:57

Messagepar roubech » 08 Déc 2011 à 10:07

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 ?
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Rubixcube » 08 Déc 2011 à 10:31

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
Rubixcube
Posteur néophyte
Posteur néophyte
 
Message(s) : 79
Inscrit(e) le : 21 Oct 2010 à 13:57

Messagepar roubech » 08 Déc 2011 à 13:54

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 ?
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Rubixcube » 08 Déc 2011 à 14:04

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.
Rubixcube
Posteur néophyte
Posteur néophyte
 
Message(s) : 79
Inscrit(e) le : 21 Oct 2010 à 13:57

Messagepar roubech » 08 Déc 2011 à 22:10

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
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Rubixcube » 09 Déc 2011 à 08:50

Merci pour cette piste.
La doc IBM c'est "Tutoriel XPages Site Finder" de http://publib.boulder.ibm.com/infocente ... /index.jsp
Rubixcube
Posteur néophyte
Posteur néophyte
 
Message(s) : 79
Inscrit(e) le : 21 Oct 2010 à 13:57

Messagepar Rubixcube » 14 Déc 2011 à 16:39

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();
Rubixcube
Posteur néophyte
Posteur néophyte
 
Message(s) : 79
Inscrit(e) le : 21 Oct 2010 à 13:57

Messagepar roubech » 14 Déc 2011 à 21:52

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 ?
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille


Retour vers Développement