2011-11-23 71 views
1

我是GWT中的新手。 嗯,我有一些CellTable的問題...而且我對這個問題感到非常不滿。 問題是:當我做一個setRowData或ListDataProvider.setList,列表中的所有數據我有所有列重複。如果列表中有11個數據,則所有11個數據在11行和所有列中重複。 爲了更好地解釋問題的形象。CellTable:所有列中的數據重複

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

// END表的代碼

//代碼中插入DATA IN CELLTABLE

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

//結束代碼插入數據在CELLTABLE

那麼,有。

謝謝,建議。

回答

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


編輯

我只注意到你的方式定義celltable:

tablePesquisaResultados = new CellTable<String>(); 


您需要定義它:

tablePesquisaResultados = new CellTable<MyObject>(); 

其中,MyObject是表示要在單元格中顯示的信息的類。

您可以使用Request FactoryGWT RPC將服務器對象傳遞到客戶端。

+0

哇!這有很大幫助。但是..另一件事。我如何通過獲取/設置傳遞一個對象到客戶端? – Katsutoshi

+0

我編輯了我的答案以包含更多信息。 –

+0

謝謝你的幫助。我必須修改我的實體類,因爲註釋,我不能序列化對象。在這種情況下DTO設計比DAO更好? – Katsutoshi

相關問題