2012-04-01 6 views
0

ich ein einfaches p:dataTable habe, die ein AJAX-Ereignis ausgelöst, wenn eine Zeile auswählen:Primefaces: Wählen Sie in derselben Zeile in p: Datatable mehrfach

<p:dataTable var="c" value="#{myBean.dmCars}" 
      selection="#{myBean.car}" selectionMode="single"> 
    <p:ajax event="rowSelect" listener="#{myBean.select}"/> 
    <p:column> 
    <f:facet name="header">Name</f:facet> 
     <h:outputText value="#{c.name}"/> 
    </p:column> 
</p:dataTable> 

Dies funktioniert gut, aber ich kann nur eine Zeile einmal wählen. Ich möchte dieselbe Zeile mehrmals und den Ereignis-Listener p:ajax für jeden Klick aufgerufen werden.

Update Ich denke, es ist, weil die Zeile hat irgendwo den Status ausgewählt. Sie sehen die ausgewählte Zeile mit einem grauen Hintergrund in diesem Beispiel: http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf

+0

nur eine wilde Vermutung ... versuchen, rowKey = "# {c.SomeUniqueID}" zu Ihrer DataTable ... – Daniel

+0

@Daniel: Danke für diesen Hinweis, aber es löst das Problem nicht. – Thor

+0

Aus Ihrer Frage ist nicht ganz klar, was Sie erreichen möchten. Mehrfach auswählen bedeutet wählen-> Auswahl aufheben-> erneut auswählen? –

Antwort

0

@Daniel und @MattHandy, vielen Dank für Ihre Unterstützung. Ich fand eine Lösung für dieses Problem:

public void select() 
{ 
    // Do some stuff 
    car=null; 
} 

Im Backing Bean i null den Wert Halter eingestellt, nachdem ich das Ereignis verarbeitet haben.

+0

Sind Sie sicher, dass Ihre Liste keine doppelten Einträge hatte? – Daniel

+0

Ja, da bin ich mir sicher. Zumindest in der Liste aus dem obigen Beispiel. Durch Klicken auf eine Zeile in dieser Tabelle wird ein Objekt mit einem @ ManyToOne-Verweis auf die verschiedenen Elemente dieser Tabelle erstellt und in einer anderen Tabelle angezeigt. – Thor