2015-01-15 5 views
1

간단한 질문이 있지만 올바른 대답을 찾을 수 없습니다.RowEditEvent를 통해 rowIndex 가져 오기

나는 꽤 복잡한 데이터 테이블 렌더링 :

<p:dataTable var="label" value="#{labelsManager.labelsList}" rowKey="#{label.cod}" editable="true" 
           rowsPerPageTemplate="5,10,15,30" paginator="true" paginatorPosition="bottom" rows="30" 
           paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
           rendered="#{not empty labelsManager.labelsList}" scrollable="true" scrollHeight="300" id="labelsList" sortMode="multiple" 
           selection="#{labelsManager.selectedLabelsForDelete}"> 
<p:ajax event="rowEdit" listener="#{labelsManager.onRowEdit}" /> 
...some code... 
</dataTable> 

과 방법을 내가 현재 행의 인덱스를 가져도 원하는 행을 편집 할

public void onRowEdit(RowEditEvent event) { 
... here I want to get the index on the current row... 
} 

하는 것 편집 할 수 있습니다. 많은 것을 검색했지만 RowEditEvent에서 ID를 추출 할 수있는 방법을 알 수 없습니다.

또한 속성의 행 인덱스를 보냈지 만 성공하지 못했습니다. 어떤 아이디어? 감사!

+0

, 대안은 (목록 비교하기 위해 모든 항목을 통해 실행해야합니다) 특히 효율적 아니지만, 그것은 아주 간단합니다 부여

public void onRowEdit(RowEditEvent event) { Label theLabel = (Label)event.getObject(); //I'm assuming the item is of type Label int theIndex = labelslist.indexOf(theLabel); } 

: 그것은 당신의 옵션을 잎 셀은 업데이트 될 행에서 동적으로 생성됩니다. 예 : tableForm : labelsList : 1 : myId) 여기서 1은 rowIndex입니다. – Aditzu

+0

' '를 사용하여 bean의 rowIndex 값을 설정할 수 있습니다. – Pellizon

+0

예 이미 rowEditor 를 넣으려고했으나 "와 같은 오류가 발생합니다. 부모 유형이 ActionSource 유형이 아닌 경우 [email protected] " – Aditzu

답변

5

데이터 테이블에는 rowKey="#{label.cod}"으로 설정 한 속성을 통해 활성 행 정보가 이미 전달됩니다. 당신은 또한 할 수 있어야, 목록 항목이 제대로 equalshashCode를 구현 한 경우

public void onRowEdit(RowEditEvent event) { 
    AjaxBehaviorEvent evt = (AjaxBehaviorEvent)event; 
    (DataTable) table = evt.getSource(); 
    int activeRow = table.getRowIndex(); //do whatever you want with it 
} 

, 또는이 당신에게 가장 유연한 그래서 같은 DataTable 클래스에 getRowIndex() 변수가있는 옵션을, 잎 List에있는 indexOf 메서드를 사용하여 현재 선택된 객체의 인덱스를 검색합니다 (데이터 테이블의 항목 순서는 백킹 목록의 항목 순서와 관련하여 매우 안정적입니다). 나는 하나의 ID를 얻으려면

+0

나는 여전히 코드를 기다리고있다 : D – Aditzu

+0

나는 이미했고 당신은 절대적으로 옳았다. 고맙습니다! 추신 이벤트에서 직접 getSource() 메서드를 호출 할 수 있습니다. 나는 evt 변수가 필요하지 않다 – Aditzu

+0

당신은 @Aditzu 환영합니다 – kolossus