2

いくつかの列を持つ素数の顔データテーブルがあり、すべての列に filteryBy 属性があります。ユーザーにヒントを提供するためにプレースホルダーまたは透かしを追加するにはどうすればよいですか。どんな提案でも、感謝します!

<p:dataTable var="dt" widgetVar="widgetUserRecords"
                             value="#{userBean.result}"
                             id="userRecordTable" paginator="true"
                             paginatorAlwaysVisible="false" rows="10"
                             height="300" >
<p:column sortBy="#{dt.course.name}" filterStyle="width:50px;"
                              filterBy="#{dt.course.name}" headerText="Course Name" style="text-align:bottom">
    <h:outputText value="#{dt.course.name}"/>
</p:column>
.
. 
.
  (other columns)
</p:dataTable>
4

5 に答える 5

9

この質問が 2012 年に出されたことは承知していますが、この回答が、データテーブルのフィールドによるフィルターに透かしを追加したい人々の助けになることを願っています。他の回答で提案されている解決策を使用してみましたforElementが、透かしを表示できませんでした。代わりに、属性を使用する 2 つのソリューションを見つけました。1 つforstyleClassは要素の属性を使用p:columnし、2 つ目は属性内で jQuery セレクターを使用しforます。また、ヘッダーに使用される要素p:watermark内に要素を配置する必要があることもわかりました。f:facet

これら 2 つのソリューションで使用したコードは次のとおりです。

<h:form id="myForm">
    <p:dataTable id="myTable">

        <p:column id="column1" filterBy="column1" styleClass="watermark1">
            <f:facet name="header">
                <p:watermark for="@(.watermark1)" value="Watermark 1" />
                <h:outputText value="Column1" />
            </f:facet>
        </p:column>

        <p:column id="column2" filterBy="column2">
            <f:facet name="header">
                <p:watermark for="@(#myForm\\:myTable\\:column2\\:filter)"
                    value="Watermark 2" />
                <h:outputText value="Column2" />
            </f:facet>
        </p:column>

    </p:dataTable>
</h:form>
于 2014-05-02T20:18:16.870 に答える
5

最初に列の ID を指定し、p:watermarkコンポーネントを追加します。

<h:form id="tableForm">
...    
    <p:dataTable var="dt" widgetVar="widgetUserRecords"
                     value="#{userBean.result}"
                     id="userRecordTable" paginator="true"
                     paginatorAlwaysVisible="false" rows="10"
                     height="300" >

        <p:column id="column1" sortBy="#{dt.course.name}" filterStyle="width:50px;"
                      filterBy="#{dt.course.name}" headerText="Course Name" style="text-align:bottom">
            <h:outputText value="#{dt.course.name}"/>
            <p:watermark forElement="tableForm:userRecordTable:column1" value="hint..."/>
        </p:column>

    </p:dataTable>
...
</h:form>

tableFormid を実際のフォームに置き換えることを忘れないでくださいp:dataTable

于 2012-10-23T05:24:40.963 に答える
1

PrimeFaces フォーラムのこのスレッドによると、次のようなものを使用して可能になるはずです。

<h:form id="form">
    <p:dataTable id="dataTable">
        <p:row>
            <p:column id="column" filterBy="....">
                <p:watermark forElement=":form:dataTable:column" value="Filter..."/>
            ...
            </p:column>
        </p:row>
    </p:dataTable>
</h:form>
于 2012-10-23T05:00:52.123 に答える
0

誰かが動的列を持つデータテーブルでプレースホルダーを使用する必要がある場合、これが役立つかもしれません...

<p:dataTable id="generalReportTable" value="#{generalReportController.reports}" var="report"
         filteredValue="#{generalReportController.filteredReports}"
         rowKey="#{report.rowKey}" >
<p:columns id="dynamicColumns" value="#{generalReportController.columns}" var="column" columnIndexVar="colIndex" 
           sortBy="#{report[column.property]}" filterBy="#{report[column.property]}" filterMatchMode="contains"
           styleClass="dynamic-cols-width-#{colIndex}">
    <f:facet name="header">
        <p:watermark for="@(.dynamic-cols-width-#{colIndex})" value="#{column.header}" />
        <h:outputText value="#{column.header}" />
    </f:facet>
    <h:outputText value="#{report[column.property]}" />
</p:columns>

于 2015-10-23T22:31:09.737 に答える