2013-03-19 18 views
5

Ich habe eine SelectCheckBoxMenu (Primefaces-Komponente) mit vielen Einträgen. Der Benutzer darf jedoch max. 3 Artikel. SelectCheckBoxMenu fullfils fast alle meine Anforderungen, das einzige Problem ist, dass es die Möglichkeit bietet, alle Elemente auszuwählen, die ich in diesem Fall offensichtlich nicht brauche.SelectCheckboxMenu - Deaktivieren Sie "alle-Auswahl"

Gibt es eine Möglichkeit, die Option "Alles auswählen" zu deaktivieren? Ich verwende ein Event, um die Einträge für max. 3. Ich denke, ich könnte das selbe für "select-all" machen und ihm nicht erlauben, sie auszuwählen, aber Ich möchte nicht die "select-all" -Option überhaupt haben.

Unter dem Code:

<p:selectCheckboxMenu value="#{services.titelId}" id="titel" 
      panelStyle="width:160px;" rendered="#{!services.isFirma()}" 
      label="#{services.prepareTitel()}" style="width:160px;" 
      styleClass="checkbox"> 
      <f:selectItems value="#{meta.getAkadTitelList()}" /> 
      <p:ajax event="change" listener="#{services.validateTitel()}" 
       update="titel" process="@this" /> 
      <p:ajax event="toggleSelect" update="titel" process="@this" /> 
</p:selectCheckboxMenu> 

Darüber hinaus ist die Verbindung zum primefaces-Vitrine Beispiel: http://www.primefaces.org/showcase/ui/selectCheckboxMenu.jsf

+1

Das Ding ist kein Combobox. Ihr CSS-Klassenname ist irreführend und nicht selbstdokumentierend. – BalusC

+0

Ja, Sie haben Recht. Ich habe es überarbeitet. – leostiw

Antwort

5

Sie können CSS-Regel Ihre CSS-Datei

#titel .ui-chkbox .ui-widget { 
    display:none; 
} 

Sie fügen sollten Füge prependId="false" zu deiner h:form hinzu, oder falls du nicht prependId="false" hinzufügen willst, kannst du dieändernWähler in so etwas wie #myForm\3A titel .ui-chkbox .ui-widget (zu handhaben die : id seperator)


Falls Sie die gesamte Filterzeile möchten entfernt Sie

<p:selectCheckboxMenu filter="false".... 
+0

Danke wie immer, ich habe beide Optionen ausprobiert, aber es hat nicht funktioniert. Wie auch immer, du hast mich auf den richtigen Weg gebracht, CSS Regel war die Antwort. Ich habe den Header aus dem Checkbox-Menü "entfernt", was sinnvoll ist, es war was ich brauchte. '.ui-selectcheckboxmenu-header { \t Anzeige: keine; } 'Ich habe die CSS-Grundfläche geändert, weil es für mein Projekt sinnvoll ist, aber wenn jemand die gleichen Probleme hat, sollten Sie es tun, nur für das selectboxmenü, das Sie brauchen. Danke nochmal Daniel. – leostiw

+1

Sie besser premefacs css nicht ändern, stattdessen fügen Sie diese Tule zu Ihrer eigenen CSS-Datei und stellen Sie sicher, dass es zuletzt geladen wird ... so wird es überschreiben Primzahlen css ... – Daniel

+0

Oh Entschuldigung, ich drückte mich schlecht aus, tat ich nicht ändere die primefaces.css, ich habe diesen Code in meinem eigenen CSS hinzugefügt. – leostiw

11

Die vorherige Antwort nicht unter PrimeFaces für mich arbeiten einstellen 5.0, also habe ich mich im generierten HTML genauer angeschaut und eine Lösung für PF5 gefunden.

Für PrimeFaces 5.0 Sie die "wählen Sie alle" Checkbox wie folgt entfernen:

.without-selectall .ui-selectcheckboxmenu-header .ui-chkbox { 
    display: none; 
} 

Jetzt verwenden panelStyleClass -Attribut statt styleClass:

<p:selectCheckboxMenu ... 
    panelStyleClass="without-selectall" 
> 
+0

Einfache und perfekte Lösung, Danke! –