2

コア JSF を使用してテーブル行の展開/折りたたみのこの機能を実現しようとしており、並べ替えを保持する必要もあります。この機能を実現できるコア JSF の方法はありますか?

4

3 に答える 3

5

参照実装のみを使用することを主張する場合は、CSS の入れ子になったh:dataTableand/orh:panelGroup適切なショットを使用して適切に配置することはできません。次に、JavaScript をスマートな方法で使用して、行の詳細を表示/非表示にすることができます。

基本的なキックオフの例を次に示します。

<h:dataTable value="#{bean.orders}" var="order">
    <h:column>
        <h:panelGrid columns="3">
            <h:graphicImage id="expand" value="expand.gif" onclick="toggleDetails(this);" />
            <h:outputText value="#{order.id}" />
            <h:outputText value="#{order.name}" />
        </h:panelGrid>
        <h:dataTable id="details" value="#{order.details}" var="detail" style="display: none;">
            <h:column><h:outputText value="#{detail.date}" /></h:column>
            <h:column><h:outputText value="#{detail.description}" /></h:column>
            <h:column><h:outputText value="#{detail.quantity}" /></h:column>
        </h:dataTable>
    </h:column>
</h:dataTable>

関数は次のtoggleDetails()ようになります (JSF によって生成されたクライアント ID が考慮されていることに注意してください)。

function toggleDetails(image) {
    var detailsId = image.id.substring(0, image.id.lastIndexOf(':')) + ':details';
    var details = document.getElementById(detailsId);
    if (details.style.display == 'none') {
        details.style.display = 'block';
        image.src = 'collapse.gif';
    } else {
        details.style.display = 'none';
        image.src = 'expand.gif';
    }
}
于 2010-01-25T17:56:42.143 に答える
0

'コア'JSF(リファレンス実装のみを使用することを意味すると思います)ではこれを実行できないと思います。

私が理解しているように、RichFacessubTableを使用してサブテーブルを作成できます

IceFacesでも同様のことができます。コンポーネントのショーケースを参照してください([テーブル]-> [拡張可能なテーブル]の下にあります)。ただし、これらのいずれかを使用するには、別のライブラリ(RichFacesまたはIceFaces)を追加して設定する必要がありますが、これはおそらく必要なものではありません。

于 2010-01-25T17:16:05.190 に答える
-2

RichFacesを使用したシンプルな拡張可能なテーブル

RichFacesを使用して単純な拡張可能なテーブルを作成できます。コードを以下に示します...

<h:form>
   <rich:dataTable value="#{wonderBean.wonders}" var="wonder">
      <rich:column colspan="3">
         <f:facet name="header">Wonder</f:facet>
     <h:outputText value="#{wonder.name}" />
     <a4j:commandLink id="link" value="#{!wonderBean.show?'[+]':'[-]'}"
        reRender="link">
     <a4j:actionparam name="val" value="#{!wonderBean.show}"
        assignTo="#{wonderBean.show}" />
     </a4j:commandLink>
      </rich:column>
      <rich:columnGroup>
         <rich:column>
        <a4j:outputPanel ajaxRendered="true">
             <rich:dataTable value="#{wonder.details}" var="detail"
            rendered="#{wonderBean.show}" style="border: 0px">
                <rich:column>
            <f:facet name="header">Location</f:facet>
            <h:outputText value="#{detail.location}" />
            </rich:column>
            <rich:column>
               <f:facet name="header">Image</f:facet>
               <h:graphicImage value="#{detail.imageUrl}" />
            </rich:column>
         </rich:dataTable>
          </a4j:outputPanel>
       </rich:column>
        </rich:columnGroup>
     </rich:dataTable>
</h:form>
于 2010-07-24T06:22:25.770 に答える