GWT对Datagrid列进行排序

时间:2014-06-16 13:25:21

标签: gwt datagrid

我的应用程序中有一个工作的Datagrid,我试图让其中一列可以排序。

  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);
    }
  });

编辑:添加行:

public void addRow(String id){
    List<String> list = dataGridProvider.getList();
    list.add(id);

    dataGridProvider.setList(list);
    dataGrid.redraw();
 }

我一直关注此处的示例代码http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwDataGrid而且我不知道自己错过了什么。当我点击标题时没有任何事情发生

1 个答案:

答案 0 :(得分: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);