2012-09-03 164 views
0

我点击一个按钮删除一行时遇到一些问题。我有一个数据表,其中包含5列。第五栏是一个按钮。我有一个要求,当我点击按钮时,需要删除与按钮对应的行数据。我试图填充使用数据模型的列值。以下是我写的用于实现行删除的代码。但该行并未被删除。JSF在按钮上删除行点击

<h:commandButton id="buttonID1" image="/images/drappimages/delete.png" style="width:15px ;" actionListener="#{adminBean.delete}" > 
<f:ajax render="adminTableID" ></f:ajax> 
</h:commandButton> 

侦听方法是使用adminVODataModel填充数据表下面

public void delete(ActionEvent event) 
{ 
    deleteFlag = true; 
    int rowIndex = adminVODataModel.getRowIndex() ; 
    AdminVO admminData = adminVODataModel.getRowData(); 
    System.out.println("The rowIndex that needs to be actioned is :"+ rowIndex); 
    System.out.println("The adminVOList is :"+ adminVOList.size()); 
    adminVOList.remove(rowIndex) ; 
    adminVOList.remove(adminData) ; 
    System.out.println("the VOList now is "+ adminVOList.size()); 
    adminVODataModel = new ListDataModel<AdminVO>(adminVOList) ; 
    setAdminScheduleVODataModel(adminVODataModel); 

} 

林指定。我试图使用上面的代码删除相应的行。但该行并未被删除。

请协助。由于提前

回答

1

你应该删除

后更新表格

只需添加update="@form"<p:ajax。如果你有一些h:panelGroup包装,你可以在更新中放置它的ID而不是@form

顺便说一句,我认为,在3.4你可以将表ID在update属性的目标太(不知道这之前3.4是可能的)

因为你搬到h:commandButton,尝试

render="@form"render="somePanelGroudIDThatWrapsTheTable"

不这样做既adminVOList.remove(rowIndex);adminVOList.remove(adminData) ; 如果你有正确的索引使用它来删除条目

+0

感谢丹尼尔的回应。当我在中使用update =“@ form”时它确实有效。但问题是,连续点击删除按钮后,已经被删除的行似乎出现了。首先,当我单击rowIndex 1时,行被删除。第二次,当我点击另一行时,比如rowindex 5,rowindex 5对应的行被删除。但rowIndex1对应的行数据似乎再次出现。 – vr3w3c9

+0

您是否检查过您的adminVOList数据是否被删除? – rags

+0

@ vr3w3c9要么检查你是删除正确的索引,要么而不是删除索引,你可以传递行var并将其从列表中删除,而不是在p:ajax中的'listener'使用类似'action =“#{adminBean .deleteWithArg(rowObj)}“',似乎你没有正确地从列表/模型中移除 – Daniel