在dataTable中使用 autoComplete 和 columnToggler 时,我会在列切换器中看到一个损坏的列列表。 也就是说,列列表不显示列名,而是显示 javascript代码(对于每列)。
以下是一个例子:
<p:commandButton id="showColsButton" type="button" value="Show Columns" />
<p:columnToggler datasource="myDataTable" trigger="showColsButton" />
<p:dataTable id="myDataTable" var="row" ...>
<p:column sortBy="#{row.myCol1}">
<f:facet name="header">
<div><h:outputText value="My Column 01" /></div>
<p:autoComplete ...>
<p:ajax event="itemSelect" update="myDataTable" />
</p:autoComplete>
</f:facet>
<h:outputText value="#{row.myCol1}" />
</p:column>
</p:dataTable>
这是一个错误还是针对此特定问题的解决方案?
答案 0 :(得分:2)
在标题构面中输入输入无效。如果您想将其用作过滤器或其他内容,请将其放在f:facet name="filter"
。
<p:dataTable id="myDataTable" var="row" ...>
<p:column filterBy="#{row.myCol1}" sortBy="#{row.myCol1}">
<f:facet name="header">
<div><h:outputText value="My Column 01" /></div>
</f:facet>
<f:facet name="filter">
<p:autoComplete ...>
<p:ajax event="itemSelect" update="myDataTable" />
</p:autoComplete>
</f:facet>
<h:outputText value="#{row.myCol1}" />
</p:column>
但您可能需要改进使用过滤器的方式,不使用p:ajax
,而是使用onchange=PF('dataTableWidget').filter()
,添加widgetVar属性并添加过滤器属性
另见