p:dataTable AutoComplete和ColumnToggler组合

时间:2017-02-09 12:27:22

标签: primefaces datatable

在dataTable中使用 autoComplete columnToggler 时,我会在列切换器中看到一个损坏的列列表。 也就是说,列列表不显示列名,而是显示 javascript代码(对于每列)。

columnToggler + autoComplete problem

以下是一个例子:

<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>

这是一个错误还是针对此特定问题的解决方案?

1 个答案:

答案 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属性并添加过滤器属性

另见