2010-06-30 17 views
0

Nous avons une page dans une application de couture en utilisant richfaces qui contient un extendedDataTable plus une ou plusieurs zones de liste. Nous avons constaté que, une fois que vous avez sélectionné quelque chose dans extendedDataTable puis que vous avez basculé vers l'une des zones de liste, extendedDataTable continue à répondre aux flèches haut et bas, donc si vous les utilisez pour modifier la sélection dans la zone de liste en surbrillance , la sélection dans extendedDataTable change également.Comment corriger la modification de la sélection de données étendues lorsqu'elles ne sont pas concentrées

Existe-t-il une solution de contournement pour arrêter le extendedDataTable modification de sélection lorsqu'il n'a pas le focus?

Unfortunatly le code est assez complexe, mais le xhtml de la table est (sans toutes les colonnes de simplicité):

<rich:extendedDataTable id="jobManJobListTable" enableContextMenu="false" 
     value="#{jobman_view.paginatedJobList}" var="job" rows="25" selectionMode="multi" 
     selection="#{jobman_view.jobListSelection}" height=""> 

    <a4j:support event="onselectionchange" reRender="detailsDiv,customerDiv" 
       action="#{jobman_view.onJobSelectionChange()}"/> 

    <rich:column width="10%" sortable="true" 
     label="#messages['jobman.ui.joblist.table.column.heading.type']}"> 
     <h:graphicImage value="../img/job_type_#{job.jobType.imageName}_16x16.png"/> 
     <rich:toolTip> 
      <span style="white-space: nowrap"> 
       <strong>#{job.jobType.name}</strong> 
      </span> 
     </rich:toolTip> 
    </rich:column> 

</rich:extendedDataTable> 

Notez le tableau ne figure dans aucun des divs énumérés dans le a4j: soutenir Rerender. Comme pour le bean backing, paginatedJobList est juste une liste de jobs, onJobSelectionChange change le job que le backing bean pense être sélectionné pour que les divs detail contiennent les données correctes quand reRendered, et jobListSelection est juste un getter/setter pour un SimpleSelection.

Il semble être lié au support a4j: sans cela la sélection ne peut pas changer quand un autre contrôle a le focus.

+0

Pouvez-vous écrire le code actuel? – pakore

Répondre

0

Vous pouvez écrire une fonction intelligente de JS et l'attacher à onkeypress attribut du extendedDataTable

Cette fonction peut désactiver le défilement lorsque quelque chose est sélectionné, et de lui permettre quand rien est sélectionné.