2013-07-15 2 views
2

내 Vaadin 7 프로젝트에서 정렬하는 동안 트리 테이블의 부모 노드 (행)를 무시해야합니다. ItemSort를 사용하여 정렬을 사용자 정의 할 수 있지만 부모 노드를 건너 뛰는 방법을 모르겠습니다!Vaadin Treetable - 부모 행을 건너 뛰기위한 맞춤 정렬

참고 : 해당 부모 노드를 해당 ItemId로 식별 할 수 있습니다.

***업데이트* **

내가 계층 적 컨테이너를 사용하고, 내 나무이 유사합니다

Name   Nos    salary 
+ Male(Node 1) 5    $12000 
    + Young  3    $6000 
    A   1    $3000 
    B   1    $1000 
    c   1    $2000 
    + Old   2    $6000 
    A   1    $3000 
    B   1    $3000 
+ Female(Node 2)5    $13000 
    + Young  3    $5000 
    A   1    $2000 
    B   1    $1000 
    c   1    $2000 
    + Old   2    $8000 
    A   1    $5000 
    B   1    $3000 

문제 나는 급여 란을 분류 할 때 "남성, 젊은 &", "여성, 요"에 대한 각 사람의 봉급의 합계를 포함합니다. ung & old "행을 검색하고"Male, Female "및"Young, old "범주의 위치를 ​​조정합니다.

난 그냥 내 사용자 정의 정렬에서 부모 노드를 건너 뛰고 싶습니다. 그것은 오직 자식 노드 일 것입니다. 간단한 말로. 모든 상위 노드를 수정해야하며 하위 노드 만 정렬해야합니다.

업데이트 USECASE 같은 부모를 가진

두 요소와 그 두 요소가 다음 내가 DefaultItemSorter.compare를 사용하여 자식 노드가 없습니다(). 다른 모든 사용 사례는 무시했습니다.

+0

누군가 대답하십시오. – Gugan

답변

1

특수 트리 테이블 정렬과 관련하여 관련 문제가 있습니다. 나는 내 자신의 컨테이너 및 Comperator 구현을 작성했다.

귀하의 질문은 기본 컨테이너가 아닌 테이블에 의해 이루어 지므로 사용중인 컨테이너에 따라 다릅니다. 기본적으로 TreeTable은 자신의 ItemSorter 구현을 사용할 수있는 HierarchicalContainer 구현을 사용합니다. 같은 부모 (null도)를 갖는
사용 DefaultItemSorter.compare()

  • 두 부모 요소 :

    • 두 잎 요소 같은 부모 갖는 두 요소를 비교하면 DefaultItemSorter를 확장하고 다른 경우를 구별 할 수 :
      반환 깊은 요소가 높은 후 그래서 값 : 는 루트 경로에 하나
    • 요소를 원하는 순서를 유지하기 위해 값을 반환
      .
    • 두 요소 같은 부모 있지 않는 : 당신이 다음 부모가 동일하며,이 두 요소를 비교 깊이를 찾을 때까지 두 경로에서
      는 트리를 이동합니다. 더 깊은 요소로 시작하고 다른 요소와 같은 수준에 올 때까지 올라가십시오.

    나는이 사건을 잊지 않았 으면 좋겠다. 어쨌든 ItemSorter가 모든 경우에 올바른 작업을 수행 할 수 있도록 여러 단위 테스트를 작성하는 것이 좋습니다.

    트리가 최대 깊이와 같이 특별한 특성을 가지고 있음을 알고있는 경우 ItemSorter를 단순화 할 수 있습니다.나는 당신의 질문에서 그것을 볼 수 없었다. 다음에 자세한 내용을 추가하십시오.

  • +0

    안녕하세요 Raffael, 제 질문을 업데이트했습니다. 친절하게 그것을 확인하십시오. 내 문제를 이해하는 데 도움이 될 수 있습니다. – Gugan

    +0

    그리고 내 코드에서 DefaultItemSorter를 재정의했습니다. compare (o1, o2)에서는 o1과 o2로 무엇을 할 수 있습니까? 그들은 단지 바로 대상입니다. 부모가 같은지 아닌지 찾는 법. 약간의 코드가 도움이 될 것입니다. 내가 틀렸다면 나를 바로 잡아라. – Gugan

    +1

    o1과 o2는 포함 할 요소의 itemId입니다. 비교 함수는 다음을 참조하십시오 : https://github.com/vaadin/vaadin/blob/master/server/src/com/vaadin/data/util/DefaultItemSorter.java?source=cc – raffael

    관련 문제