将行号列添加到GWT CellTable

时间:2010-12-03 15:50:36

标签: gwt row-number

我需要在CellTable中插入新的第一列,并在其中显示当前行的RowNumber。在GWT中执行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

来自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());