Java GWT 2.1单元格表列标题单击事件
有没有办法将ClickHandler(或任何类型的处理程序)添加到?我想在我的CellTable中添加一些排序功能,但我在或类中没有看到任何允许这样做的方法。我使用post来了解如何使用CellTable。到目前为止,CellTable上还没有现成的支持排序的方法。然而,有一种手动的解决方法,涉及大量的代码苦工。请参阅费用示例下自行车棚中的类Java GWT 2.1单元格表列标题单击事件,java,gwt,Java,Gwt,有没有办法将ClickHandler(或任何类型的处理程序)添加到?我想在我的CellTable中添加一些排序功能,但我在或类中没有看到任何允许这样做的方法。我使用post来了解如何使用CellTable。到目前为止,CellTable上还没有现成的支持排序的方法。然而,有一种手动的解决方法,涉及大量的代码苦工。请参阅费用示例下自行车棚中的类SortableHeader和SortableColumn。您可以在com.google.gwt.sample.expenses.gwt.client.Ex
SortableHeader
和SortableColumn
。您可以在com.google.gwt.sample.expenses.gwt.client.ExpenseDetails
中找到用法。您可以使用它,直到下一个版本中出现具体的内容
签出目录:随着GWT2.1的最终发布,是否有任何对可排序列的支持添加到CellTable中?或者在看了bikeshed示例后,它仍然是您自己的解决方案吗?单击事件的解决方法:
Header<String> columnHeader = new Header<String>(new ClickableTextCell()) {
@Override
public String getValue() {
return columnName;
}
};
columnHeader.setUpdater(new ValueUpdater<String>() {
@Override
public void update(String value) {
Window.alert("Header clicked!");
}
});
table.addColumn(column, columnHeader);
Header columnHeader=新标题(新的ClickableTextCell()){
@凌驾
公共字符串getValue(){
返回列名称;
}
};
columnHeader.setUpdater(新的ValueUpdater(){
@凌驾
公共无效更新(字符串值){
Window.alert(“点击标题!”);
}
});
表.addColumn(列、列标题);
CellTable=newcelltable();
//创建名称列。
final TextColumn name column=新TextColumn(){
@凌驾
公共字符串getValue(联系人){
返回contact.name;
}
};
//创建一个数据提供者。
ListDataProvider dataProvider=新ListDataProvider();
//将表连接到数据提供程序。
dataProvider.addDataDisplay(表);
final List=dataProvider.getList();
用于(联系人:联系人){
列表。添加(联系人);
}
final ListHandler columnSortHandler=新ListHandler(
名单);
Header columnHeader=新标题(新的ClickableTextCell()){
@凌驾
公共字符串getValue(){
返回“名称”;
}
};
columnHeader.setUpdater(新的ValueUpdater(){
@凌驾
公共无效更新(字符串值){
如果(窗口确认(“想做什么?”){
nameColumn.setSortable(true);
columnSortHandler.setComparator(名称列,
新比较器(){
公共int比较(联系人o1,联系人o2){
如果(o1==o2){
返回0;
}
//比较名称列。
如果(o1!=null){
返回值(o2!=null)?o1.name.compareTo(o2.name):1;
}
返回-1;
}
});
}else name column.setSortable(false);
}
});
//使名称列可排序。
nameColumn.setSortable(false);
//创建地址列。
TextColumn addressColumn=新的TextColumn(){
@凌驾
公共字符串getValue(联系人){
返回联系人地址;
}
};
//添加列。
table.addColumn(名称列、列标题);
表.addColumn(addressColumn,“地址”);
//将数据添加到数据提供程序,它会自动将数据推送到
//小部件。
//添加ColumnSortEvent.ListHandler以将排序连接到
//java.util.List。
//------------------要添加的代码--------------------------------//
VerticalPanel vp=新的VerticalPanel();
表.addColumnSortHandler(columnSortHandler);
//------------------代码端--------------------------------//
//我们知道数据默认按字母顺序排序。
table.getColumnSortList().push(nameColumn);
//将其添加到根面板。
副总裁添加(表);
RootPanel.get().add(vp);
该链接似乎不再有效。试试这个
CellTable<Contact> table = new CellTable<Contact>();
// Create name column.
final TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact contact) {
return contact.name;
}
};
// Create a data provider.
ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>();
// Connect the table to the data provider.
dataProvider.addDataDisplay(table);
final List<Contact> list = dataProvider.getList();
for (Contact contact : CONTACTS) {
list.add(contact);
}
final ListHandler<Contact> columnSortHandler = new ListHandler<Contact>(
list);
Header<String> columnHeader = new Header<String>(new ClickableTextCell()) {
@Override
public String getValue() {
return "Name";
}
};
columnHeader.setUpdater(new ValueUpdater<String>() {
@Override
public void update(String value) {
if (Window.confirm("Want to do?")){
nameColumn.setSortable(true);
columnSortHandler.setComparator(nameColumn,
new Comparator<Contact>() {
public int compare(Contact o1, Contact o2) {
if (o1 == o2) {
return 0;
}
// Compare the name columns.
if (o1 != null) {
return (o2 != null) ? o1.name.compareTo(o2.name) : 1;
}
return -1;
}
});
} else nameColumn.setSortable(false);
}
});
// Make the name column sortable.
nameColumn.setSortable(false);
// Create address column.
TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact contact) {
return contact.address;
}
};
// Add the columns.
table.addColumn(nameColumn, columnHeader);
table.addColumn(addressColumn, "Address");
// Add the data to the data provider, which automatically pushes it to the
// widget.
// Add a ColumnSortEvent.ListHandler to connect sorting to the
// java.util.List.
//------------------ Code to add --------------------------------//
VerticalPanel vp = new VerticalPanel();
table.addColumnSortHandler(columnSortHandler);
//------------------ Code end --------------------------------//
// We know that the data is sorted alphabetically by default.
table.getColumnSortList().push(nameColumn);
// Add it to the root panel.
vp.add(table);
RootPanel.get().add(vp);