Page 1 sur 1

Picklist dans les xPages

MessagePublié: 25 Juin 2010 à 15:23
par mike76
Bonjour,

Avez-vous une technique pour créer un genre de picklist avec les Xpages ?

J'ai trouvé ce lien :
http://dominoextnd.blogspot.com/2009/05/xpages-how-to-create-view-picklist.html

J'ai téléchargé cet exemple mais j'ai un message d'erreur lorsque ma picklist se ferme.
Dommage ça avait l'air pas mal.

Merci d'avance.

MessagePublié: 25 Juin 2010 à 18:16
par mike76
j'ai repéré où ça plantait.
dans le bouton "select" dans la "picklist"
le code plante sur cette ligne :
Code : Tout sélectionner
 var doc=database.getDocumentByID(docId);


l'erreur :
Exception
Error while executing JavaScript action expression
Script interpreter error, line=19, col=19: Exception occurred calling method NotesDatabase.getDocumentByID(java.lang.String) null


est-ce que pour vous ça fonctionne ??

MessagePublié: 26 Juin 2010 à 09:57
par mike76
Voici la base de test en question si vous pouvez tester de votre côté et me dire si ça fonctionne pour vous
merci d'avance

MessagePublié: 26 Juin 2010 à 11:13
par mike76
Voici le message qui apparaît une fois que j'ai cliqué sur le bouton "OK" de la popup affiché dans mon premier post :

Unexpected runtime error
The runtime has encountered an unexpected error.

Error source
Page Name:/form1.xsp
Control Id: button1
Property: onclick


Exception
Error while executing JavaScript action expression
Script interpreter error, line=20, col=19: Exception occurred calling method NotesDatabase.getDocumentByID(java.lang.String) null

Javascript code


1: function printToLog(stuff) {
2: _dump("\r\nPRINT START\r\n");
3: _dump(stuff);
4: _dump("\r\nPRINT END\r\n");
5: }
6:
7: var database = session.getDatabase(session.getServerName(), "Picklist Example.nsf")
8:
9: var viewPanel=getComponent("viewPanel1"); //get the componet of viewPanel
10: var docIDArray=viewPanel.getSelectedIds(); //get the array of document ids
11:
12: printToLog('got ids')
13:
14: for(i=0;
15: i < docIDArray.length;
16: i++){
17: var docId=docIDArray[i];
18: printToLog(docId)
19:
20: var doc=database.getDocumentByID(docId);
21: printToLog(doc)
22:
23: if(doc != null){
24: var pickthis1 = doc.getItemValueString("listitem")
25: printToLog(pickthis1)
26: }
27:
28:
29: }
30:
31: if(pickthis1 != null){
32: dominoDocument1.replaceItemValue("field1", pickthis1)
33: }

MessagePublié: 26 Juin 2010 à 15:57
par mike76
j'ai bidouillé des trucs et maintenant ça marche :?

le problème c'est que je ne sais plus ce que j'ai modifié pour que ça fonctionne

pour ceux qui veulent, faites le test avec cette base d'exemple pour voir si ça fonctionne directement chez vous
merci de votre retour

MessagePublié: 19 Août 2010 à 11:04
par bzronan
Bonjour,

J'ai testé la base d'exemple et effectivement pour que cela fonctionne j'ai fait quelques corrections dans le code dans le bouton du popup :

1: function printToLog(stuff) {
2: _dump("\r\nPRINT START\r\n");
3: _dump(stuff);
4: _dump("\r\nPRINT END\r\n");
5: }
6:
7: // var database = session.getDatabase(session.getServerName(), "Picklist Example.nsf") //==> mettre cette ligne en commentaire (inutile pour le reste du code)
8:
9: var viewPanel=getComponent("viewPanel1"); //get the componet of viewPanel
10: var docIDArray=viewPanel.getSelectedIds(); //get the array of document ids
11: var picklist1= new Array() //==> utile si on souhaite récupérer l'ensemble des éléments sélectionnés dans la liste
12: printToLog('got ids')
13:
14: for(i=0;
15: i < docIDArray.length;
16: i++){
17: var docId=docIDArray[i];
18: printToLog(docId)
19:
20: var doc=database.getDocumentByID(docId);
21: printToLog(doc)
22:
23: if(doc != null){
24: pickthis1[i] = doc.getItemValueString("listitem") // permet de remplir le tableau pour retourner toutes les données sélectionnées
25: printToLog(pickthis1)
26: }
27:
28:
29: }
30:
31: if(pickthis1 != null){
32: dominoDocument1.replaceItemValue("field1", pickthis1)
33: }

MessagePublié: 19 Août 2010 à 11:33
par mike76
merci je vais retester avec tes modifications

MessagePublié: 20 Août 2010 à 10:01
par mike76
Je viens de tester ton code ça fonctionne maintenant
merci
Code : Tout sélectionner
var viewPanel=getComponent("viewPanel1"); //get the componet of viewPanel
var docIDArray=viewPanel.getSelectedIds(); //get the array of document ids
var picklist1= new Array();
 
for(i=0; i < docIDArray.length; i++){
   var docId=docIDArray[i];
   var doc=database.getDocumentByID(docId);

   if(doc != null)
      picklist1[i] = doc.getItemValueString("listitem");
}

if(picklist1 != null)
   dominoDocument1.replaceItemValue("field1", picklist1);

MessagePublié: 20 Août 2010 à 13:15
par Michael DELIQUE
tips ?

MessagePublié: 20 Août 2010 à 13:18
par mike76
allez c'est parti je te fais ça

Multi Select Dialog picker

MessagePublié: 21 Août 2010 à 13:18
par d.bugger
Regarde aussi ici pour un vrai dialog box !

MessagePublié: 21 Août 2010 à 13:34
par mike76
salut,

je viens de regarder ton lien, fort intéressant
c'est un genre de dialoglist, vraiment bien
merci
bon week-end

MessagePublié: 21 Août 2010 à 20:20
par Michael DELIQUE
tiiiiiiiiiips.....