2012-12-04 40 views
3

後不更新我有一個DataGrid組件:Primefaces的數據網格的內容刪除項目

<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,該方法從列表中刪除了該項目的內容。 DataGrid甚至刷新(我可以看到顯示的列的數量減少了一個),但不是網格元素內的值。

在代碼中,我特意寫了?因爲我嘗試了幾十個選項,包括:

  • 刷新網格: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

正如你所看到的,網格現在檢測只顯示兩個項目,但顯示的兩個項目是前兩個項目。

請給我一些提示,因爲我用光了。 :-(

提前感謝!

巴拉熱

回答

0

由PrimeFaces提供的p:commandButton使用AJAX在默認情況下,所以你應該相當設置process="@none"並沒有設置immediate標誌 (​​)。

同樣使用p:commandButton裏面p:dataTable沒有正常工作,但在3.4版中修復(如果我沒記錯的話),這也適用於p:dataGrid