Frage

Wie kann ich den Stil einer bestimmten Zeile zu ändern auf der Grundlage einer Bedingung? Ich kann JSF EL verwenden in den reichen: Spalte Stil Klassenattribut, aber ich habe für jede Spalte zu schreiben. Ich möchte die gesamte Zeile ändern.

Danke

War es hilfreich?

Lösung

ich tun, wie Sie bereits erwähnt haben und den Stil auf die Säule gegeben.

Allerdings können Sie immer versuchen, alle Ihre Spalten in einer <rich:columnGroup> Verpackung, die ein <tr> ausgeben soll, und legen Sie Ihre bedingten Stil auf das.

EDIT: (als Antwort auf Kommentar): Wenn die Header-Facetten in Ihren Spalten aufgeteilt werden, dann können Sie sie in eine Spaltengruppe trennen als auch. Sollte funktionieren - Sie nicht einmal die Spaltengruppe in der Kopfzeile benötigen ??

Eg.

<rich:dataTable>
  <f:facet name="header">
    <rich:columnGroup>
      <rich:column>Header 1</rich:column>
      <rich:column>Header 1</rich:column>
    </rich:columnGroup>
  </f:facet>
  <rich:columnGroup>
    <rich:column>Data</rich:column>
    <rich:column>Data</rich:column>
  </rich:columnGroup>
</rich:dataTable>

Andere Tipps

Speziell für jede Spalte:

<rich:column styleClass="#{someBean.isSomething ? 'styleIfTrue' : 'styleIfFalse' }">

Das ist mein Code, gibt es eine Checkbox auf jeder Zeile, wenn ein Kontrollkästchen aktiviert ist, wird die Zeile hervorgehoben:

<rich:dataTable value="#{manageOutstandingApprovals.approvalsResults}" var="approvals" styleClass="wp100 mtb20"  sortMode="single" id="approvalsTable"  
            enableContextMenu="false" selectionMode="none" reRender="actions" rows="10">

        <rich:column styleClass="#{approvals.rowcolor}" width="5%" sortBy="#{approvals.documentType}" sortOrder="#{manageOutstandingApprovals.documentTypeSort}">
          <f:facet name="header">
            <h:outputText value="#{messages['outstandingApprovals.documentType']}"/>
          </f:facet>
          <h:outputText  value="#{messages[approvals.documentType]}" id="col1"/>
        </rich:column>

        <rich:column styleClass="#{approvals.rowcolor}" width="5%" sortBy="#{approvals.documentID}" sortOrder="#{manageOutstandingApprovals.documentIDSort}">
          <f:facet name="header">
            <h:outputText value="#{messages['outstandingApprovals.documentID']}"/>
          </f:facet>
          <h:outputText value="#{approvals.documentID}" id="col2"/>
        </rich:column>

        <rich:column styleClass="#{approvals.rowcolor}" width="10%" sortBy="#{approvals.dateSubmitted}" sortOrder="#{manageOutstandingApprovals.dateSubmittedSort}">
          <f:facet name="header">
            <h:outputText value="#{messages['outstandingApprovals.dateSubmitted']}"/>
          </f:facet>
          <h:outputText value="#{approvals.dateSubmitted}" id="col3"/>
        </rich:column>

        <rich:column styleClass="#{approvals.rowcolor}" width="15%" sortBy="#{approvals.submittedBy}" sortOrder="#{manageOutstandingApprovals.submittedBySort}">
          <f:facet name="header">
            <h:outputText value="#{messages['outstandingApprovals.submittedBy']}"/>
          </f:facet>
          <h:outputText value="#{approvals.submittedBy}"  id="col4"/>
        </rich:column>

        <rich:column styleClass="#{approvals.rowcolor}" width="20%" sortBy="#{approvals.orgName}" sortOrder="#{manageOutstandingApprovals.organizationSort}">
          <f:facet name="header">
            <h:outputText value="#{messages['outstandingApprovals.userOrg']}"/>
          </f:facet>
          <h:outputText value="#{approvals.orgName}"  id="col5"/>
        </rich:column>

        <rich:column styleClass="#{approvals.rowcolor}" width="5%" sortBy="#{approvals.value}" sortOrder="#{manageOutstandingApprovals.valueSort}">
          <f:facet name="header">
            <h:outputText value="#{messages['outstandingApprovals.value']}"/>
          </f:facet>
          <h:outputText value="#{approvals.value}"  id="col6"/>
        </rich:column>

        <rich:column styleClass="#{approvals.rowcolor}" width="20%" sortBy="#{approvals.approverUserName}" sortOrder="#{manageOutstandingApprovals.approverSort}">
          <f:facet name="header">
            <h:outputText value="#{messages['outstandingApprovals.approver']}"/>
          </f:facet>
          <h:outputText value="#{approvals.approverUserName}" id="col7"/>
        </rich:column>

        <rich:column styleClass="#{approvals.rowcolor}" width="15%" sortBy="#{approvals.dateAssigned}" sortOrder="#{manageOutstandingApprovals.assignedSort}">
          <f:facet name="header">
            <h:outputText value="#{messages['outstandingApprovals.assigned']}"/>
          </f:facet>
          <h:outputText value="#{approvals.dateAssigned}"  id="col8"/>
        </rich:column>

        <rich:column styleClass="#{approvals.rowcolor}" width="5%" sortBy="#{approvals.dateOutstanding}"  sortOrder="#{manageOutstandingApprovals.numOutstandingSort}">
          <f:facet name="header">
            <h:outputText value="#{messages['outstandingApprovals.daysOutstanding']}"/>
          </f:facet>
          <h:outputText value="#{approvals.dateOutstanding}"  id="col9"/>
        </rich:column>

        <rich:column styleClass="#{approvals.rowcolor}">
          <f:facet name="header">
            <h:outputText value="#{messages['outstandingApprovals.selectButton']}" title="#{messages['outstandingApprovals.selectButtonTitle']}"/>
          </f:facet>
          <h:selectBooleanCheckbox class="chkbx" value="#{approvals.selected}" id="selectBox" title="#{messages['outstandingApprovals.selectButtonTitle']}">
            <a:support event="onclick" ajaxSingle="true" reRender="approvalsTable" /> 
          </h:selectBooleanCheckbox>
        </rich:column>
      </rich:dataTable>

In meinem Backing Bean:

public String getRowcolor() {
    if (selected) // selected is a variable whose value is from the checkBox  
        return "row-highlight-color"; // css id
    else
        return "row-white-color"; // css id
    }

Mit rowClasses ... Sie können einen schönen Zebraart zum Beispiel festgelegt, und legen Sie eine bestimmte Farbe, wenn der Wert eingestellt ist, was Sie wollen:

Hier ist ein Beispiel, wo mein Wert ein boolean ist. (RowKey ist der Index von jeder Zeile, haben Sie es wie dies in reich einzustellen: Datentabelle:

  

rowKeyVar = "RowKey"

     

rowClasses = "# {myBean.is_validValue == false? (RowKey mod 2 == 0?   'Bestellt-table-even-Reihe': 'bestellen-table-odd-Reihe'): 'gefunden'} "

Ich habe gefunden Klasse Stil, wenn ma Wert == true.

CSS:

.found
{
background-color: #FACC2E;
}   
.order-table-even-row
{
background-color: #FCFFFE;
}

.order-table-odd-row
{
background-color: #ECF3FE;
}

Sie können mit den Datentabellen columnClasses und rowClasses Eigenschaften.

So können Sie das Ergebnis produzieren kann, die gezeigt wird, hier

Ich habe eine Hybridlösung mit Javascript getan.

<rich:column styleClass="expired" rendered="#{documento.expired}">
<f:facet name="header">
Da evadere entro
</f:facet>                  
<h:outputText value="#{documento.timeAgoInWords}" />
</rich:column>

und dann in Javascript (mit Prototype, die in Richfaces enthält)

<script type="text/javascript">   
  function colorize() {    
    $$('td.expired').each(function(el) {
      el.up().addClassName('expired');      
    });
  }

  Event.observe(window, 'load', function() {
    colorize();
  });
</script>

edit:

diese eine bedingte CSS-Klasse hinzufügen, mit gerendert:

<rich:column styleClass="expired" rendered="#{documento.expired}">

mit Javascript I Schleife auf jedem td mit CSS-Klasse abgelaufen $$('td.expired') und fügen Sie die gleiche CSS-Klasse auf den oberen Knoten tr mit el.up().

Event.observe(window, 'load', function() {});

diese einfach läuft die Funktion, wenn das DOM ist voll geladen.

Bei der Verwendung von h: Datentabelle, erstellen Sie eine Bean-Methode und dies die Art zu bestimmen nennen. Vielleicht könnte dies auch für ein reiches getan werden: Datatable

    public String getStyleSelectedOrderRows() {
        StringBuilder sb = new StringBuilder();
        String[] oddEven = new String[]{"oddRow,", "evenRow,"};
        int i = 0;
        for (MyObject object: myObjectList) {
            sb.append(object.isSelected() ? "selected," : oddEven[i++ % 2]);
        }
        return sb.toString();
    }

und im .xhtml:

<h:dataTable rowClasses="#{bean.styleSelectedOrderRows}"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top