删除项目后,Primefaces dataGrid内容不会更新

时间:2012-12-04 21:31:47

标签: datagrid primefaces

我有一个datagrid组件:

<h:form id="myForm">
    <h:panelGroup id="statementDataContent" layout="block">

[... some controlls ...]

    <p:dataGrid id="dg" columns="#{statementDataRequestAction.columnCount}"  var="statement"
       value="#{statementDataRequestAction.data}"  rowIndexVar="#{statement.id}" >
          <p:column>
         <p:panelGrid columns="1" >

              [... some controlls ...]
              <p:commandButton value="-" immediate="true" type="submit" actionListener="#{statementDataRequestAction.remove(statement)}"  process="@form" update="??? " />

         </p:panelGrid>
          </p:column>
    </p:dataGrid>

如您所见,有一个按钮可以删除当前项目。它正确调用bean,该方法从列表中删除了支持网格的项目。 数据网格甚至刷新(我可以看到显示的列数减少了一个),但不是网格元素内的值。

在代码中,我专心写了???因为我尝试了几十个选项,包括:

  • 刷新网格:dg:myForm:dg
  • 刷新整个表单:@form:myForm:myForm:statementDataContent等。
  • 刷新内部字段,但很难解决这些问题
  • 即使是一些奇特的东西,例如使用p:remoteCommandp:collector *

我的bean在SessionScope中(无法更改)。

帮助理解我的问题:想象一下这个起始状态:

Before delete

我在datagrid中有三个项目。现在我按下最左边(第一个)项目的删除按钮。日志告诉正确的元素从支持集合中删除:

Remove statement: 4 - StatementDataWrapper [id=4, data=Entity: 16 - hu.avhga.entities.StatementData, year=1000]
===============Removed: true :
[StatementDataWrapper [id=5, data=Entity: 17 - hu.avhga.entities.StatementData, year=1010], StatementDataWrapper [id=6, data=Entity: 18 - hu.avhga.entities.StatementData, year=1020]]

此外,以下屏幕截图显示了之后的结果:

enter image description here

如您所见,网格现在检测到只显示两个项目,但显示的是前两个项目。

请给我一些提示,因为我用完了。 : - (

提前致谢!

巴拉热

1 个答案:

答案 0 :(得分:0)

PrimeFaces提供的p:commandButton默认使用AJAX,所以你应该设置process="@none"而不是设置immediate标志 (Example in PrimeFaces showcase)。

p:commandButton内使用p:dataTable也无法正常工作,但在版本3.4中已修复(如果我没记错的话)。这也适用于p:dataGrid