更新数据表primefaces

时间:2017-03-24 17:37:40

标签: primefaces datatable

我正在创建一个由任务管理器组成的应用程序。

在此任务管理器中,收件箱列表中有3个列表(收件箱,今天和星期),只显示没有类别的任务,而另外两个列表分别显示当前和本周的有或没有类别的任务。

我希望能够更改三个列表中一个任务的类别。因此,如果我更改收件箱任务的类别(不应该有类别),则应更新整个表格,并从列表中删除任务。

我调试程序并从列表中正确删除任务,但只更新了类别的单元格,而不是整个表格。如果我重新加载页面,则不会显示任务。有人知道如何更新整个表而不仅仅是一个单元格吗?感谢。

这是我的数据表的代码(被修改的单元格是带有“category”标题的最后一个单元格):

<h:form id="formTareas">
    <p:dataTable id="tablaTareas" var="tarea" value="#{userBean.tasks}"
        border="1" selection="#{userBean.selectedTasks}"
        rowKey="#{tarea.id}" editable="true" editMode="cell"
        widgetVar="tasksTable" style="text-align: center" paginator="true"
        rows="8" filteredValue="#{userBean.filteredTasks}">

        <p:ajax event="cellEdit" listener="#{userBean.updateTask(tarea)}"
            process=":formTareas" update=":formTareas:tablaTareas" />

        <p:column selectionMode="multiple"
            style="width:16px;text-align:center" />

        <p:column>
            <f:facet name="header">#{msgs.comentario}</f:facet
            <h:outputText value="#{tarea.comments}" />
        </p:column>

        <p:column>
            <f:facet name="header">#{msgs.fechaCreacion}</f:facet>
            #{userBean.formatDate(tarea.created)}
        </p:column>

        <p:column id="columnaPlanned" sortBy="#{tarea.planned}">
            <f:facet name="header">#{msgs.fechaPlanificacion}</f:facet>
            <h:outputText value="#{tarea.planificada}" />
        </p:column>

        <p:column headerText="category">
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText
                        style="color : #{tarea.isRetarded() ? 'red' : 'black'};"
                        value="#{userBean.getCategoryName(tarea)}" />
                </f:facet>
                <f:facet name="input">
                    <h:selectOneMenu value="#{tarea.categoryId}" style="width:96%">
                        <f:selectItem itemLabel="Inbox" itemValue="" />
                        <f:selectItems value="#{userBean.categories}" var="c"
                            itemValue="#{c.id}" itemLabel="#{c.name}" />
                    </h:selectOneMenu>
                </f:facet>
            </p:cellEditor>

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

1 个答案:

答案 0 :(得分:0)

我刚刚找到了问题的答案。我添加了这些行,并更新了整个dataTable:

<p:remoteCommand name="onCellEdit" update=":formTareas:tablaTareas" />
<p:dataTable id="tablaTareas" ........>
     <p:ajax event="cellEdit" listener="#{userBean.updateTask(tarea)}"
      oncomplete="onCellEdit()" />

这对我来说很好。