【发布时间】:2011-05-19 20:00:50
【问题描述】:
我需要在CellTable 中插入一个新的第一列,并在其中显示当前行的RowNumber。在 GWT 中执行此操作的最佳方法是什么?
【问题讨论】:
标签: gwt row-number
我需要在CellTable 中插入一个新的第一列,并在其中显示当前行的RowNumber。在 GWT 中执行此操作的最佳方法是什么?
【问题讨论】:
标签: gwt row-number
从ListDataProvider 包裹的列表中获取元素的索引。像这样:
final CellTable<Row> table = new CellTable<Row>();
final ListDataProvider<Row> dataProvider = new ListDataProvider<Starter.Row>(getList());
dataProvider.addDataDisplay(table);
TextColumn<Row> numColumn = new TextColumn<Starter.Row>() {
@Override
public String getValue(Row object) {
return Integer.toString(dataProvider.getList().indexOf(object) + 1);
}
};
有关示例的其余部分,请参阅 here。
【讨论】:
z00bs 的解决方案是错误的,因为行号是根据数据列表中对象的索引计算的。例如,对于具有以下元素的字符串列表:["Str1", "Str2", "Str2"],行号将为 [1, 2, 2]。错了。
此解决方案使用 celltable 中的行索引作为行号。
public class RowNumberColumn extends Column {
public RowNumberColumn() {
super(new AbstractCell() {
@Override
public void render(Context context, Object o, SafeHtmlBuilder safeHtmlBuilder) {
safeHtmlBuilder.append(context.getIndex() + 1);
}
});
}
@Override
public String getValue(Object s) {
return null;
}
}
和
cellTable.addColumn(new RowNumberColumn());
【讨论】: