2016-06-02 2 views
0

So heben Sie die Auswahl einer ausgewählten Zeile auf einer dataTable-Oberkante auf, indem Sie nur einen Mausklick ausführen, genauso wie die Auswahl der Zeile.Dataset von Primitiven Dataset beim Klicken mit Mehrfachauswahl die Auswahl aufheben

Dies ist der Code, den ich im Moment wählen bin mit und abzuwählen, aber die Auswahl aufheben muss die Ctrl oder CMD (Mac) Taste drücken.

<p:dataTable 
    value="#{adminiClubReconManager.bankMovementsFound}" var="movs" 
    style="width:90%;border: 0px;" 
    selection="#{adminiClubReconManager.selectedBankMovement}" 
    rowKey="#{movs.id}" editable="true" styleClass="rowStyle" 
    paginator="true" rowsPerPageTemplate="5,10,15" rows="10" 
    selectionMode="mutiple" 
    paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"> 
    <p:ajax event="rowSelect" 
     listener="#{adminiClubReconManager.onBankRowSelect()}" 
     update="@form:reconMessages" /> 
    <p:ajax event="rowUnselect" 
     listener="#{adminiClubReconManager.onBankRowUnselect()}" 
     update="@form:reconMessages" /> 
    <p:column 
     style="background:transparent;border:0px;text-align:left"> 
     <c:facet name="header"> 
      <h:outputText 
       value="#{msg['admini.common.movement.recon.number']}" /> 
     </c:facet> 
     <h:outputText value="#{movs.id}" 
      style="background:transparent;border:0px" /> 
    </p:column> 
    ... 
</p:dataTable> 
+0

Afaik gibt ein attibute dafür ist. Überprüfen Sie die Dokumentation – Kukeltje

+2

'rowSelectMode'. Wenn Sie den Wert "hinzufügen" eingeben, kann dies zu dem führen, was Sie möchten. – Kukeltje

+0

was meinst du, indem du ihm einen Wert 'hinzufügen' gibst? wie und wo das 'auf der p: ajax? –

Antwort

-1

Wir haben 2 Möglichkeiten, dieses Problem zu lösen.

Erste

command Erstellen und primefaces Methode unselectAllRows() aufrufen;

<p:dataTable id="dataTableId" var="p" value="#{myBean.dataModel}" paginator="true" rows="50" paginatorPosition="bottom" emptyMessage="Empty results" rowKey="#{p.attribute}" selection="#{myBean.atributeList}" widgetVar="dataTableWidgetVar">` 
    <p:commandButton widgetVar="buttonClear" value="Clear selection" onclick="dataTableWidgetVar.unselectAllRows();"/> 
</p:dataTable> 

Nach dem Klick haben Sie die Zeilen

Zweite

Via ajaxEvent Aufruf primefaces Methode unselectAllRows abgewählt();

<p:dataTable id="dataTableId" var="p" value="#{myBean.dataModel}"                              paginator="true" rows="50" paginatorPosition="bottom" emptyMessage="Empty results" rowKey="#{p.attribute}" selection="#{myBean.atributeList}" widgetVar="dataTableWidgetVar">` 
    <p:ajax event="page" update="dataTableId" oncomplete="dataTableWidgetVar.unselectAllRows();"/> 
... 
</p:dataTable> 

In diesem Fall ausgewählt, um die Daten der ersten Seite, wenn Sie eine andere Seite zum Beispiel Seite 3 klicken, wird die Ajax die Methode UnselectAllRows execute(); Und Sie löschen, dass Sie ausgewählt haben.

Dazu lösen finded ich dieses Material bei primefaces Forum in: https://forum.primefaces.org/viewtopic.php?f=3&t=24144

+0

Lies den letzten Kommentar zum Frage bitte. Ist das Verhalten nach Ihrer Antwort was dort beschrieben? – Kukeltje