2011-05-16 5 views
1

다음 특성 (기능, 총합, 통과, 실패)을 가진 셀 테이블이 있고 행 집합이 있습니다. 알파벳순으로 기능 (텍스트)별로 정렬하거나 실패 (정수)로 정렬하도록 지원을 추가하고 싶습니다. 지형지 물과 표 모두를 기준으로 정렬하고 싶지는 않습니다. 개별적으로 정렬하고 싶습니다. 이것을 어떻게 성취합니까?GWT celltable 위젯의 다른 속성 정렬

addColumnSortHandler 메서드를 사용하여 Column Sort Handler를 추가 할 수 있지만 정렬 할 수있는 열을 선택하면이 핸들러가 시작됩니다. 두 개 이상의 열 정렬 처리기를 추가하면 모든 비교자가 실행됩니다. 클릭 한 열로 데이터 만 정렬되도록하려면 어떻게해야합니까? 즉, 지형지 물 제목을 클릭하면 사전 순으로 정렬됩니다. 실패를 클릭하면 실패로 분류해야합니다 .. 등

어떤 도움을 주시면 감사하겠습니다. 당신

감사하는 것은 여기에

 final ListHandler<FeatureSummaryObject> failedColSortHandler = new ListHandler<FeatureSummaryObject>(dataProvider.getList()); 
     failedColSortHandler.setComparator(failedCol, new Comparator<FeatureSummaryObject>() { 

      @Override 
      public int compare(FeatureSummaryObject o1, FeatureSummaryObject o2) { 
       return o1.getFailed() - o2.getFailed(); 
      } 
     }); 
     table.addColumnSortHandler(failedColSortHandler); 
     failedCol.setSortable(true); 


     ListHandler<FeatureSummaryObject> featureColSortHandler = new ListHandler<FeatureSummaryObject>(dataProvider.getList()); 
     featureColSortHandler.setComparator(featureCol, new Comparator<FeatureSummaryObject>() { 

      @Override 
      public int compare(FeatureSummaryObject o1, FeatureSummaryObject o2) { 
       return o1.feature.compareTo(o2.feature); 
      } 
     }); 
     table.addColumnSortHandler(featureColSortHandler); 

     featureCol.setSortable(true); 

감사합니다,

+0

아무도 GWT 셀 테이블에서 작동하지 않습니까? – EFreak

답변

4

가 나는 파일 목록 (파일 이름, 크기, 마임 타입)을 표시 할 CellTable을 사용하고 코드 조각을합니다. 나는 열을 기준으로 개별적으로 정렬 할 수 있어요 다음 코드를 사용하여 머리글을 클릭 할 때 :

먼저 나뿐만 정렬 열을 표시 :

urlColumn.setSortable(true); 
    mimeColumn.setSortable(true); 
    sizeColumn.setSortable(true); 

그런 다음 나는 각 열에 대해 ColumnSortHandler을 만들 추가, 이 같은 테이블에 추가 : 나는 일부 로깅을 추가 (I 파일 이름을 클릭하면, 오직 파일 이름 정렬 핸들러가 호출 의미) 적절한 정렬 핸들러 해고되고 검증

// Add sorting for the Name column 
    ListHandler<Asset> urlSortHandler = new ListHandler<Asset>(dataProvider.getList()); 
    urlSortHandler.setComparator(urlColumn, new Comparator<Asset>() { 
    public int compare(Asset o1, Asset o2) { 
     .... 
    } 
    }); 
    table.addColumnSortHandler(urlSortHandler); 

    // Add sorting for the Size column 
    ListHandler<Asset> sizeSortHandler = new ListHandler<Asset>(dataProvider.getList()); 
    sizeSortHandler.setComparator(sizeColumn, new Comparator<Asset>() { 
    public int compare(Asset o1, Asset o2) { 
     .... 
    } 
    }); 
    table.addColumnSortHandler(sizeSortHandler); 

    // Add sorting for the Type column 
    ListHandler<Asset> mimeSortHandler = new ListHandler<Asset>(dataProvider.getList()); 
    mimeSortHandler.setComparator(mimeColumn, new Comparator<Asset>() { 
     public int compare(Asset o1, Asset o2) { 
     ... 
     } 
    }); 
    table.addColumnSortHandler(mimeSortHandler); 

.

이 샘플 코드가 도움이되기를 바랍니다. 그렇지 않다면 문제를 진단하는 데 도움이되는 몇 가지 샘플 코드를 제공하십시오

+0

고맙습니다 Brad! 그러나 그것이 내가 정말로 붙어있는 곳입니다. 이름을 클릭 할 때 이름 정렬 처리기 만 실행되는지 확인하려면 어떻게합니까? 현재 그들 모두는 해고 당한다! – EFreak

+0

헛소리! 오타가 있었는데 같은 열에 2 개의 정렬 핸들러처럼 작동했습니다! 고쳤다! 감사! – EFreak