2014-06-16 2 views
0

응용 프로그램에서 작동하는 Datagrid가 있고 열 중 하나를 정렬 가능하게하려고합니다. 여기GWT 데이터 격자 열 정렬

public static final ProvidesKey<String> KEY_PROVIDER = new ProvidesKey<String>() { 
    @Override 
    public Object getKey(String item) { 
     return item; 
    } 
    }; 

내가 그것을 만드는 방법 여기

DataGrid<String> dataGrid = new DataGrid<String>(KEY_PROVIDER); 

여기 내 목록 핸들러

ListHandler<String> sortHandler = new ListHandler<String>(dataGridProvider.getList()); 
dataGrid.addColumnSortHandler(sortHandler); 

입니다 내가 정렬 할 할 열입니다

// Add partner id column 
    Column<String, String> partnerIdColumn = 
     new Column<String, String>(new TextCell()) { 
    @Override 
    public String getValue(String object) { 
     return object; 
    } 
    }; 
    partnerIdColumn.setSortable(true); 
    sortHandler.setComparator(partnerIdColumn, new Comparator<String>() { 
    @Override 
    public int compare(String o1, String o2) { 
     return o1.compareTo(o2); 
    } 
    }); 

편집 : 행 추가 :

여기 예제 코드 http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwDataGrid을 따라 왔으며 내가 무엇이 누락되었는지 잘 모릅니다. 머리글을 클릭해도 아무 것도 발생하지 않습니다.

답변

0

다음은 내 DATA가있는 코드입니다. 코드와 비교하십시오.

List<String> DATA = new ArrayList<String>(); 
    DATA.add("John"); 
    DATA.add("Mary"); 
    DATA.add("Zander"); 

    final ProvidesKey<String> KEY_PROVIDER = new ProvidesKey<String>() { 
     @Override 
     public Object getKey(String item) { 
      return item; 
     } 
    }; 
    DataGrid<String> dataGrid = new DataGrid<String>(KEY_PROVIDER); 
    Column<String, String> partnerIdColumn = new Column<String, String>(
      new TextCell()) { 
     @Override 
     public String getValue(String object) { 
      return object; 
     } 
    }; 
    partnerIdColumn.setSortable(true); 
    dataGrid.addColumn(partnerIdColumn, "Name"); 

    ListDataProvider<String> dataGridProvider = new ListDataProvider<String>(); 
    dataGridProvider.addDataDisplay(dataGrid); 
    List<String> list = dataGridProvider.getList(); 
    for (String data : DATA) { 
     list.add(data); 
    } 

    ListHandler<String> sortHandler = new ListHandler<String>(list); 
    sortHandler.setComparator(partnerIdColumn, new Comparator<String>() { 
     @Override 
     public int compare(String o1, String o2) { 
      return o1.compareTo(o2); 
     } 
    }); 
    dataGrid.addColumnSortHandler(sortHandler); 
    //the data is sorted alphabetically by default. 
    dataGrid.getColumnSortList().push(partnerIdColumn); 
+0

아직도 내 코드에서 무엇이 잘못 되었는가를 알 수는 있지만 이것이 효과적입니다! 감사합니다 –

+0

이제 DataGrid에 행을 추가하면 정렬이 다시 중지됩니다. 편집을 참조하십시오. –

+0

@Cam Sonaris, DataGrid가 아니라 CellTable을 사용하고 있다는 것을 알지만, 나에게 동일한 오류가 있음) 질문에 고마워, 대답을 찾아 보자!) – olgacosta