【问题标题】:Adding a row-number column to GWT CellTable向 GWT CellTable 添加行号列
【发布时间】:2011-05-19 20:00:50
【问题描述】:

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

【问题讨论】:

    标签: gwt row-number


    【解决方案1】:

    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

    【讨论】:

    • 我把它改成了 indexOf() + 1,因为大多数用户希望第一行是“1”而不是“0”。
    • 作为一名软件工程师,我倾向于不同意。但无论如何都很好:)。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多