我的应用程序中有一个工作的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而且我不知道自己错过了什么。当我点击标题时没有任何事情发生
答案 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);