条件に基づいて特定の行のスタイルを変更するにはどうすればよいですか? rich:column スタイルのクラス属性で JSF EL を使用できますが、列ごとに記述する必要があります。行全体を変更したい。
ありがとう
具体的には、各列について:
<rich:column styleClass="#{someBean.isSomething ? 'styleIfTrue' : 'styleIfFalse' }">
すでに述べたように、スタイルを列に配置します。
<rich:columnGroup>
ただし、常にすべての列を出力するはずの にラップして<tr>
、条件付きスタイルを配置することができます。
編集: (コメントに応じて): 列のヘッダー ファセットが壊れている場合は、それらを列グループに分割することもできます。うまくいくはずです-ヘッダーに列グループさえ必要ないかもしれません??
例えば。
<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>
これは私のコードです。各行にチェックボックスがあり、チェックボックスが選択されている場合、行が強調表示されます:
<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>
私のバッキングビーンで:
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
}
rowClassesを使用します...たとえば、素敵なシマウマのスタイルを設定し、値が必要なものに設定されているときに特定の色を設定できます。
私の値がブール値である例を次に示します。(rowkey は各行のインデックスです。rich:datatable で次のように設定する必要があります。
rowKeyVar="行キー"
rowClasses="#{myBean.is_validValue == false ? (rowkey mod 2 == 0 ? 'order-table-even-row' : 'order-table-odd-row') : 'found'}"
ma value == true の場合、Found クラス スタイルを設定しました。
CSS:
.found
{
background-color: #FACC2E;
}
.order-table-even-row
{
background-color: #FCFFFE;
}
.order-table-odd-row
{
background-color: #ECF3FE;
}
私はJavascriptを使ってハイブリッドソリューションを実行しました。
<rich:column styleClass="expired" rendered="#{documento.expired}">
<f:facet name="header">
Da evadere entro
</f:facet>
<h:outputText value="#{documento.timeAgoInWords}" />
</rich:column>
次にJavascriptで(Richfacesに含まれているプロトタイプを使用)
<script type="text/javascript">
function colorize() {
$$('td.expired').each(function(el) {
el.up().addClassName('expired');
});
}
Event.observe(window, 'load', function() {
colorize();
});
</script>
編集:
これにより、レンダリングされた条件付きcssクラスが追加されます。
<rich:column styleClass="expired" rendered="#{documento.expired}">
javascriptを使用すると、cssクラスの有効期限が切れたすべてのtdでループし$$('td.expired')
、同じcssクラスを。を使用して上位ノードtrに追加しel.up()
ます。
Event.observe(window, 'load', function() {});
これは、DOMが完全にロードされたときに関数を実行するだけです。
h:datatableを使用する場合は、Beanメソッドを作成し、これを呼び出してスタイルを決定します。おそらく、これはrich: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();
}
および.xhtml内:
<h:dataTable rowClasses="#{bean.styleSelectedOrderRows}"