我有一个主面数据表,列数很少,并且所有列都有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>
答案 0 :(得分:5)
我意识到这个问题是在2012年被问到的,但是我希望这个答案可以帮助那些想要在数据表中按字段添加水印的人。我尝试使用forElement
在其他答案中建议的解决方案,但无法显示水印。相反,我找到了两个使用for
属性的解决方案,第一个使用styleClass
元素上的p:column
属性,第二个使用{{1}中的jQuery选择器属性。我还发现for
元素需要位于用于标题的p:watermark
元素中。
我在这两个解决方案中使用的代码如下:
f:facet
答案 1 :(得分:4)
首先为您的列提供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>
不要忘记将tableForm
ID替换为p:dataTable
周围的实际表单。
答案 2 :(得分:1)
根据this thread on the PrimeFaces forum,应该可以使用这样的东西:
<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>
答案 3 :(得分: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>
答案 4 :(得分:0)
您可以通过转到 jquery.dataTables.js 第2701行并替换
来更改此内容而不覆盖占位符属性。attr( 'placeholder', language.sSearchPlaceholder )
与
.attr( 'placeholder', 'Search table...' )
您还可以找到sSearchPlaceholder变量,该变量可能位于语言文件中并替换它。