Добавление столбца с номером строки в GWT CellTable - PullRequest
5 голосов
/ 03 декабря 2010

Мне нужно вставить новый первый столбец в CellTable и отобразить в нем RowNumber текущей строки. Каков наилучший способ сделать это в GWT?

Ответы [ 2 ]

4 голосов
/ 04 декабря 2010

Получить индекс элемента из списка, обернутого вашим 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);
    }
};

См. здесь для остальной части примера.

3 голосов
/ 22 января 2016

Решение от z00bs неверно, так как номер строки рассчитывается по индексу объекта в Списке данных.Например, для списка строк с элементами: ["Str1", "Str2", "Str2"] номера строк будут [1, 2, 2].Это неправильно.

В этом решении для номера строки используется индекс строки в таблице ячеек.

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());
...