2012-09-03 7 views
0

버튼 클릭으로 행을 삭제할 때 몇 가지 문제가 있습니다. 5 열이 포함 된 datatable 있습니다. 다섯 번째 열은 버튼입니다. 버튼을 클릭 할 때 버튼에 해당하는 행 데이터를 삭제해야하는 요구 사항이 있습니다. 데이터 모델을 사용하여 열 값을 채우려고. 아래는 행 삭제를 위해 작성한 코드입니다. 그러나 행이 삭제되지 않습니다.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); 

} 

이하 임 특정된다. 위의 코드를 사용하여 해당 행을 제거하려고합니다. 그러나 행이 삭제되지 않습니다.

도와주세요. 당신은

그냥 <p:ajaxupdate="@form"를 추가 삭제

후 테이블을 업데이트해야합니다 사전

답변

1

에 감사합니다. 일부 h:panelGroup 랩퍼가있는 경우 @form 대신 id를 배치하여 업데이트 할 수 있습니다.

은 BTW 나는 시도 3.4 당신이 update 속성의 목표에 너무 당신이 h:commandButton로 이동하기 때문에

(즉, 이전 3.4에 가능했다 있는지 확실하지 않습니다) 테이블 ID를 배치 할 수 있다고 생각

render="@form" 또는 render="somePanelGroudIDThatWrapsTheTable"

모두 adminVOList.remove(rowIndex);adminVOList.remove(adminData) ;,691하지 않는다올바른 색인을 가지고 있다면 엔트리를 지우는 데 사용하십시오

+0

감사합니다. Daniel에게 감사드립니다. 에서 update = "@ form"을 사용할 때 작동했습니다. 그러나 문제는 삭제 버튼을 계속 클릭 할 때 이미 삭제 된 행이 다시 나타나는 것입니다. 처음에는 rowIndex 1을 클릭하면 행이 삭제됩니다. 두 번째로 다른 행을 클릭하면 rowindex 5라고 말하면서 rowindex 5에 해당하는 행이 삭제됩니다. 그러나 rowIndex1에 해당하는 행 데이터가 다시 나타납니다. – vr3w3c9

+0

adminVOList에서 데이터가 제거되었는지 확인 했습니까? – rags

+0

@ vr3w3c9 올바른 색인을 지우고 있는지 확인하거나, 행 var을 전달할 수있는 색인을 삭제하는 대신 p의'listener' 대신 목록에서 삭제하십시오.'ajax'action = "# {adminBean .deleteWithArg (rowObj)} "', 목록/모델에서 제대로 제거하지 않는 것 같습니다. – Daniel