CellTable: данные повторяются во всех столбцах

я новичок здесь и в GWT. Ну, у меня есть некоторые вопросы с CellTable... И я очень расстроен этой проблемой. Проблема в том, что когда я создаю setRowData или ListDataProvider.setList, все данные в списке, которые у меня есть, повторяются во всех столбцах. Если у меня есть 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

Ну, есть.

Спасибо, в совете.


person Katsutoshi    schedule 23.11.2011    source источник


Ответы (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 Factory или < href="http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html" rel="nofollow">GWT RPC.

person Ioan Agopian    schedule 23.11.2011
comment
Вау! Это очень помогает. Но.. другое дело. как я передам объект с помощью get/sets на стороне клиента? - person Katsutoshi; 24.11.2011
comment
Спасибо вам за помощь. Мне нужно изменить свой класс сущности, из-за аннотаций я не могу сериализовать объект. В этом случае дизайн DTO лучше, чем DAO? - person Katsutoshi; 24.11.2011
comment
DAO — хороший шаблон из-за принципа разделения интересов. Дело в том, что вам могут понадобиться DTO даже при реализации DAO. Это одна из причин, по которой команда GWT добавила RequestFactory. См. этот сообщение. - person Ioan Agopian; 24.11.2011
comment
Гум. А настойчивость? я могу использовать JPA в обычном режиме или мне нужно рассмотреть возможность использования Hibernate? - person Katsutoshi; 24.11.2011
comment
большое спасибо. Я решил свою проблему и множество других. Большое спасибо - person Katsutoshi; 24.11.2011
comment
Пожалуйста. Вы должны принять ответ, если он помог решить вашу проблему. - person Ioan Agopian; 24.11.2011