[RESOLU] Case à Cocher vue Xpages

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

[RESOLU] Case à Cocher vue Xpages

Messagepar fripouille76 » 11 Fév 2014 à 17:17

Salut à tous

une petite question pour les experts :)

j'utilise une colonne dédiée case à cocher dans une vue Xpages jusque la pas de souci.
Je peux facilement récupérer les id des documents sélectionnés.

SAUF.....si j'ai plusieurs pages, en effet lorsque vous sélectionnez un doc sur la première page et que vous allez sur la seconde, pour en sélectionner d'autres tout bêtement => Ceux sélectionner sur la première sont décochés.
j'ai testé différent truc et option, mais rien ne fonctionne.

Comment garder en mémoire les sélections sur les pages des vues ? (en évitant les usines à gaz)
Dernière édition par fripouille76 le 12 Fév 2014 à 15:41, édité 1 fois.
fripouille76
Maître-posteur
Maître-posteur
 
Message(s) : 430
Inscrit(e) le : 24 Juil 2006 à 11:19

Re: Case à Cocher vue Xpages

Messagepar roubech » 11 Fév 2014 à 21:56

si tu récupères les Id directement dans les cases à cocher au niveau de ton traitement, en changeant de pages, seules les cases à cocher de la page courant existent.
si tu stockes les ID dans un vector en viewScope au fur et à mesure que le user les coches ou décoche, par exemple, tu devrais pouvoir les conserver d'une pages à l'autre (si ta pagination est bien en partial refresh) ?
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Re: Case à Cocher vue Xpages

Messagepar Massilia56 » 12 Fév 2014 à 09:34

Perso côté IHM je trouve ca déroutant pour le user de conserver les checkbox cochées sur une page lors du passage à une autre page.
Après tout dépend de l'utilisation que tu souhaites en faire...
Ou alors oui stocker les ID dès que tu coches mais attention à aussi gérer le décochage...
Pour éviter les usines à gaz il faut souvent apporter une autre solution :wink: (augmenter le nombre de lignes affichées..., alerter qu'il y a des cases cochées à traiter lors du passage à la page suivante...)
Massilia56
Massilia56
Posteur habitué
Posteur habitué
 
Message(s) : 290
Inscrit(e) le : 16 Déc 2004 à 09:32
Localisation : RENNES

Re: Case à Cocher vue Xpages

Messagepar mike76 » 12 Fév 2014 à 15:33

regarde ce lien :
http://openntf.org/XSnippets.nsf/snippe ... -in-a-view

Code : Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
 
  <xp:viewPanel id="viewPanel1">
    <xp:this.facets>
      <xp:pager partialRefresh="true" layout="Previous Group Next"
        xp:key="footerPager" id="pager1">
      </xp:pager>
      <xp:scriptBlock id="scriptBlockViewPanel" xp:key="south">
        <xp:this.value>
          <![CDATA[
            dojo.addOnLoad( function(){
              dojo.query(".xspCheckBoxViewColumn").connect('onclick', function() {
                  viewPanelHelper.addDoc( this.id, this.checked, this.value );
                  viewPanelHelper.updateDataField('#{id:viewPanelSelectedIds}');
              });
              viewPanelHelper.rebuildDocSelection();   
              viewPanelHelper.updateDataField('#{id:viewPanelSelectedIds}');
            });
          ]]></xp:this.value>
      </xp:scriptBlock>
      <xp:inputHidden id="viewPanelSelectedIds" xp:key="southEast" />
    </xp:this.facets>
    <xp:this.data>
      <xp:dominoView var="view1" viewName="All"></xp:dominoView>
    </xp:this.data>
    <xp:viewColumn columnName="DocUNID" id="viewColumn1" showCheckbox="true">
      <xp:viewColumnHeader value="DocUNIDs" id="viewColumnHeader1" />
    </xp:viewColumn>
  </xp:viewPanel>
     
  <xp:scriptBlock id="scriptBlockViewPanelHelper">
    <xp:this.value>
      <![CDATA[     
      /**
       * viewPanelHelper
       *
       * keeps selection of a view panel
       * stores data in hidden input field
       * @author Sven Hasselbach
       * @category CSJS
       * @category Helper
       * @version 1.3
       */
      viewPanelHelper = {
        selDocs: function(){ new Array() },
         
        addDoc: function( id, checked, noteId ){
          viewPanelHelper.selDocs[ noteId ] = { 'id': id, 'checked': checked , 'noteId': noteId };
        },
        rebuildDocSelection: function (){   
          dojo.query(".xspCheckBoxViewColumn").forEach(
              function( obj ){
                  if( viewPanelHelper.selDocs[obj.value] )
                    obj.checked = viewPanelHelper.selDocs[obj.value].checked;
              }
          )
   
        },
        getSelectedNoteIds: function(){
          var list = "";
          for( e in viewPanelHelper.selDocs ){
            if( viewPanelHelper.selDocs[e].checked === true ){
              if( list !== "" ) list +=",";
              list += viewPanelHelper.selDocs[e].noteId;
            }
          }
          return list
        },
        updateDataField: function(id){
          dojo.byId(id).value = viewPanelHelper.getSelectedNoteIds();
        }
         
      }
      ]]>
    </xp:this.value>
  </xp:scriptBlock>
 
  <xp:button value="Test" id="buttonTest">
    <xp:eventHandler event="onclick" submit="true"
      refreshMode="complete">
      <xp:this.action>
        <![CDATA[#{javascript:
          var value = getComponent("viewPanelSelectedIds").value;
          _dump( value )}]]>
      </xp:this.action>
    </xp:eventHandler>
  </xp:button>
   
</xp:view>
mike76
V.I.P.
V.I.P.
 
Message(s) : 2122
Inscrit(e) le : 12 Oct 2006 à 13:14
Localisation : ROUEN

Re: Case à Cocher vue Xpages

Messagepar fripouille76 » 12 Fév 2014 à 15:39

Merci Mike76 :)......

Ca a l'air de fonctionner, l'idée est de stocker au fur et a mesure les id, des docs sélectionnés pour les conserver ensuite lors de retour sur les pages.
En fait le besoin, est surtout lié à une sélection de doc à partir d'une liste pouvant être conséquente, genre traitement exécuté sur un ensemble de document.
fripouille76
Maître-posteur
Maître-posteur
 
Message(s) : 430
Inscrit(e) le : 24 Juil 2006 à 11:19


Retour vers Développement