【问题标题】:Is there any way to update PrimeFaces data table without updating the table headers?有什么方法可以在不更新表头的情况下更新 PrimeFaces 数据表?
【发布时间】:2013-12-14 21:31:38
【问题描述】:

这是一个笨拙的问题!!! :)

这可以通过某种方式实现吗? <p:dataTable>(无论是延迟加载还是其他方式)是否可以在不更新其标题的情况下更新(表内的内容(行)以及页脚应该在不更新表标题的情况下更新)?

<p:dataTable> 的更新可由任何UICommand 触发,例如<p:commandButton><p:commandLink> 等。

当我们在<p:dataTable> 中使用<p:cellEditor><p:rowEditor/> 结合使用edit/update 行时,可以看到类似的东西(不确定单个单元格编辑)。

<p:dataTable id="dataTable" var="row" value="#{bean}" ...>
    <p:column headerText="Header 1" sortBy="#{row.property1}" filterBy="#{row.property1}">
        ....
    </p:column>
    <p:column>
        <!--They may be our own headers-->
        <f:facet name="header">
            Header 2
            ...
        </f:facet>
        ....
    </p:column>
    ...
</p:dataTable>

【问题讨论】:

    标签: jsf primefaces datatable jsf-2.2


    【解决方案1】:

    最简单的方法是为此使用PrimeFaces Selectors (PFS)。这只需要将所需的单元格内容包装在另一个具有 ID 样式类的组件中——这样 jQuery 就可以找到并收集它们。

    例如

    <p:dataTable ...>
        <p:column>
            <f:facet name="header">...</f:facet>
            <h:panelGroup id="col1" styleClass="cell">...</h:panelGroup>
        </p:column> 
        <p:column>
            <f:facet name="header">...</f:facet>
            <h:panelGroup id="col2" styleClass="cell">...</h:panelGroup>
        </p:column> 
        <p:column>
            <f:facet name="header">...</f:facet>
            <h:panelGroup id="col3" styleClass="cell">...</h:panelGroup>
        </p:column> 
        ...
    </p:dataTable>
    <p:commandButton value="update" update="@(.cell)" />
    

    这种包装很笨拙,是的,但最好不要自制自定义渲染器。你总是可以创建一个&lt;my:column&gt; 标签文件来减少样板文件。

    另见:

    【讨论】:

    • 不确定你的意思,但&lt;f:facet name="header"&gt; 当然应该在小组之外。我已经澄清了答案。
    • 这种包装现在确实笨拙。 :) 谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 2017-08-17
    • 2016-06-13
    • 2015-03-04
    相关资源
    最近更新 更多