1

我是这里和 GWT 的新手。好吧,我对 CellTable 有一些疑问……我对这个问题感到非常不安。问题是:当我创建 setRowData 或 ListDataProvider.setList 时,我拥有的 List 中的所有数据在所有列中重复。如果我在列表中有 11 个数据,则所有 11 个数据在 11 行和所有列中重复。为了更好地解释,问题的图像。

http://imageshack.us/photo/my-images/713/celltable.jpg/

我不知道我必须做些什么来解决这种类型的“问题”。无论如何,我将发布代码:

//表格代码

    tablePesquisaResultados = new CellTable<String>();
    tablePesquisaResultados.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);
    tablePesquisaResultados.setTableLayoutFixed(true);
    tablePesquisaResultados.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
    flexTable.setWidget(2, 0, tablePesquisaResultados);

    SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
    SimplePager pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 10, true);
    pager.setDisplay(tablePesquisaResultados);

    tablePesquisaResultados.setWidth("1262px");

    colID = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colID, "ID");

    colNomeUsuario = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colNomeUsuario, "Nome do Usuário");

    colEmail = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colEmail, "Email");

    colCodigoUsuario = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colCodigoUsuario, "Código do Usuário");

    colTelefone = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colTelefone, "Telefone");

    colCodigoSituacao = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colCodigoSituacao, "Código da Situação");

    colDataAbertura = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colDataAbertura, "Data de Abertura");

    colDataEncerramento = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colDataEncerramento, "Data de Encerramento");

    colDescricao = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colDescricao, "Descrição do Chamado");

    colMidiaAnexada = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colMidiaAnexada, "Mídia Anexada");

    colStatusID = new TextColumn<String>() {
        @Override
        public String getValue(String object) {
            return object.toString();
        }
    };
    tablePesquisaResultados.addColumn(colStatusID, "Status ID");
    flexTable.getFlexCellFormatter().setColSpan(2, 0, 2);
    FlexTableHelper.fixRowSpan(flexTable);

//结束表代码

//在 CELLTABLE 中插入数据的代码

        ListDataProvider<String> dataProvider = new ListDataProvider<String>();     
    dataProvider.addDataDisplay(tablePesquisaResultados);
    dataProvider.setList(resultado);
    System.out.println(resultado);

//结束代码以在CELLTABLE中插入数据

嗯,有。

谢谢,建议。

4

1 回答 1

1

问题是对于每一列,您使用相同的getValue函数:

@Override
public String getValue(String object) {
   return object.toString();
}


您需要为每列返回要在该列中显示的值的特定函数。例如对于列colNomeUsuario

colNomeUsuario = new TextColumn<String>() {
   @Override
   public String getValue(String object) {
      return object.getNomeUsuario();
   }
};


编辑

我刚刚注意到您定义单元格表的方式:

tablePesquisaResultados = new CellTable<String>();


您需要像这样定义它:

tablePesquisaResultados = new CellTable<MyObject>();

其中 MyObject 是一个类,表示要在单元格表中显示的信息。

您可以使用Request FactoryGWT RPC将服务器对象传递到客户端。

于 2011-11-23T20:03:27.580 回答