2016-08-29 2 views
0

Ich benutze Primefaces 5.3, und ich fülle eine Datentabelle mit einigen Datensätzen aus der Datenbank, wenn die Länge der Datensätze ist niedriger als 10 Ich vervollständige es mit leeren Datensätzen, so dass die Datentabelle immer 10 Zeilen.Deaktivieren Sie die Auswahl in Datentabelle

Meine Datentabelle sieht wie folgt aus:

<p:dataTable id="dataTable" 
    editable="true" editMode="cell" 
    value="#{beanPlanningl.getListPlanningSalle(entry, 1)}" 
    var="planning" 
    selectionMode="single" 
    selection="#{beanPlanning.selectedPlanning}" 
    rowKey="#{planning.id}" 
    sortBy="#{planning.heureDebut}" 
    > 

Also, was ich will ist die Auswahl auf Zeilen zu deaktivieren, die die leeren Datensätze hat.

Wie kann ich das tun?

PS: planning.id entspricht 0 in leeren Datensätzen.

Edit:

Ich vergaß zu erwähnen, dass ich bereits verwendet rendered, wie folgend:

<p:column > 
    <p:cellEditor rendered="#{planning.id != 0}"> 
     <f:facet name="output"> <h:outputText value="#{planning.heureDebut}" /></f:facet> 
     <f:facet name="input"> 
      <p:inputMask mask="99:99" value="#{planning.heureDebut}" 
         required="true" maxlength="4" 
         requiredMessage="Heure de début : vous devez indiquer une valeur." 
         validatorMessage="Heure de début non valide."> 
       <f:validateRegex pattern="([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"/> 
      </p:inputMask> 
     </f:facet> 
    </p:cellEditor> 
</p:column> 

aber dies nur verhindert, dass Zellen bearbeiten, aber sie können immer gewählt werden.

Edit 2:

Ich versuchte disabledSelection jetzt verwende ich Zeilen nicht auswählen können, aber Zellen kann immer ausgewählt werden, bevor ich disabledSelection verwendet:

enter image description here

wie Sie kann ich sehen Wählen Sie Zeilen und beim Schweben werden sie farbig.

und dann, wenn ich disabledSelection verwendet:

enter image description here

Jetzt schwebt nicht funktioniert für leere Zeilen und Selektion auf Zeilen als gut, aber die Zellen können immer gewählt werden, so dass kein Ich muß nur verhindern, dass von der Verabredung.

Ich bemerkte, dass wenn die Zelle ausgewählt ist, zwei CSS-Klassen hinzugefügt werden: ui-state-highlight ui-cell-editing.

+0

haben Sie versucht, 'rendred' zu' dataTable' hinzufügen?!? –

+0

wird es so sein 'gerenderten =" # {YourManagedBean.yourCondition} "' Vergessen Sie nicht, die 'dataTable' zu ​​aktualisieren, wenn Sie den' rendred' Zustand Wert ändern –

+0

@YagamiLight ja ich tat, sonst wären meine Zellen editierbar, wenn Ich benutze Rendred Ich verhindere das Bearbeiten von Zellen, aber ich kann sie immer noch auswählen. –

Antwort

0

Die Lösung, die ich tat, war das Standardverhalten von Spalten zu verhindern, die wie nach einem .ui-cell-editor in seiner Childs haben tun:

$(".ui-editable-column").click(function(event){ 
        if(!$(this).find('.ui-cell-editor').length){ 
         event.preventDefault(); 
         return false; 
        } 
      }); 
Verwandte Themen