Usuário com melhor resposta
Retornando Objeto

Pergunta
-
Pessoal,
Imaginem que eu tenha uma entidade CLIENTE, com 2 propriedade codigo e nome.
Dentro do meu projeto eu utilizo esse objeto para tudo, passando o mesmo como parâmetro em meus métodos.
Tudo bem quanto a Incluir, alterar, excluir e editar, consigo usar o objeto normalmente.
Meu problema está quando preciso retornar uma consulta com vários registros, pois não gostaria de retornar um Dataset, eu gostaria de retornar o meu objeto contendo todos os registros.
Como fazer isso ? Já que esse meu projeto será disponibilizado através de um webservice ?
Obrigado
Douglas
Respostas
-
ArrayList testeLista = new ArrayList();
testeLista.Add(dataSet);
oRel.SetDataSource(testeLista);
Até rodou mais como eu passo o objeto com os campos?
Desde ja agradeco..
- Marcado como Resposta Wagner dos Santos VasconcellosModerator terça-feira, 29 de março de 2011 16:11
-
Adicione cada instância do objeto diretamente no arraylist.
Mas poderia usar também uma "List" desse objeto, nesse caso
referencie System.Collections.Generic e depois crie a List.
Ex: (usando List)
ClienteVO Cliente = New ClienteVO();
Cliente.Nome = "Fulano";
List<ClienteVO> ClienteList = ClienteProcesso.Consultar(Cliente);//ClienteProcesso retorna uma List desse Objeto.
foreach(ClienteVO ItemCliente in ClienteList){
//se web:}
//Response.Write(ItemCliente .Nome);
//se desktop:
//Console.Write(ItemCliente .Nome);
ou então, use o seu arraylist:
Ex: (arraylist: adicionando)
ArrayList ClienteLista= new ArrayList()
ClienteVO Cliente = New ClienteVO();
for(int i = 0; i < 10; i++){
Cliente.Id = i;}
Cliente.Nome = "Nome " + Convert.ToString(i);
ClienteLista.Add(Cliente);
Ex: (arraylist: recuperando)
for(int i = 0; i < ClienteList.Count; i++){
ClienteVO ClienteRecuperado = (ClienteVO)ClienteLista};
//se web:
//Response.Write(ClienteRecuperado.Nome);
//se desktop:
//Console.Write(ClienteRecuperado.Nome);
Flw!!
Atenciosamente
Carlos Duarte
- Marcado como Resposta Wagner dos Santos VasconcellosModerator terça-feira, 29 de março de 2011 16:11
-
Cara,
Usa o List genérico...
Quando vc colocar o List genérico como retorno de um método de um webservice, o cara que for consumir vai entender isso como um vetor de uma entidade, cada item será um nó no XML de retorno e suas propriedades nós filhos desde nó.
O cliente ve um XML + - assim:
.
.
.
<cliente>
<nome>Cliente 1</nome></cliente>
<id>1</id>
<cliente>
<nome>Cliente 2</nome></cliente>
<id>2</id>
.
.
.
No caso do ArrayList não tenho certeza de como irá funcionar, acredito que não deva ser muito diferente. O problema do ArrayLitst é que seus itens são object, e no List os itens são tipados corretamente.
Uma coisa que não lembro é se sua classe deve ser marcada com o atributo Serializable...
Abraço!- Marcado como Resposta Wagner dos Santos VasconcellosModerator terça-feira, 29 de março de 2011 16:11
Todas as Respostas
-
-
-
ArrayList testeLista = new ArrayList();
testeLista.Add(dataSet);
oRel.SetDataSource(testeLista);
Até rodou mais como eu passo o objeto com os campos?
Desde ja agradeco..
- Marcado como Resposta Wagner dos Santos VasconcellosModerator terça-feira, 29 de março de 2011 16:11
-
Adicione cada instância do objeto diretamente no arraylist.
Mas poderia usar também uma "List" desse objeto, nesse caso
referencie System.Collections.Generic e depois crie a List.
Ex: (usando List)
ClienteVO Cliente = New ClienteVO();
Cliente.Nome = "Fulano";
List<ClienteVO> ClienteList = ClienteProcesso.Consultar(Cliente);//ClienteProcesso retorna uma List desse Objeto.
foreach(ClienteVO ItemCliente in ClienteList){
//se web:}
//Response.Write(ItemCliente .Nome);
//se desktop:
//Console.Write(ItemCliente .Nome);
ou então, use o seu arraylist:
Ex: (arraylist: adicionando)
ArrayList ClienteLista= new ArrayList()
ClienteVO Cliente = New ClienteVO();
for(int i = 0; i < 10; i++){
Cliente.Id = i;}
Cliente.Nome = "Nome " + Convert.ToString(i);
ClienteLista.Add(Cliente);
Ex: (arraylist: recuperando)
for(int i = 0; i < ClienteList.Count; i++){
ClienteVO ClienteRecuperado = (ClienteVO)ClienteLista};
//se web:
//Response.Write(ClienteRecuperado.Nome);
//se desktop:
//Console.Write(ClienteRecuperado.Nome);
Flw!!
Atenciosamente
Carlos Duarte
- Marcado como Resposta Wagner dos Santos VasconcellosModerator terça-feira, 29 de março de 2011 16:11
-
Cara,
Usa o List genérico...
Quando vc colocar o List genérico como retorno de um método de um webservice, o cara que for consumir vai entender isso como um vetor de uma entidade, cada item será um nó no XML de retorno e suas propriedades nós filhos desde nó.
O cliente ve um XML + - assim:
.
.
.
<cliente>
<nome>Cliente 1</nome></cliente>
<id>1</id>
<cliente>
<nome>Cliente 2</nome></cliente>
<id>2</id>
.
.
.
No caso do ArrayList não tenho certeza de como irá funcionar, acredito que não deva ser muito diferente. O problema do ArrayLitst é que seus itens são object, e no List os itens são tipados corretamente.
Uma coisa que não lembro é se sua classe deve ser marcada com o atributo Serializable...
Abraço!- Marcado como Resposta Wagner dos Santos VasconcellosModerator terça-feira, 29 de março de 2011 16:11
-
Cara desculpe-me bater na mesma tecla...
Vou tentar explicar melhor:
Tenho aplicacao WebService, onde estou construindo alguns relatorios no CrystalReports, pois bem, em alguns desses relatorios preciso preencher com uma grid e seus dados correspondentes, no Crystal eu nao fiz pelo data set, e sim indicando a classe para trabalhar direto com os objetos....o problema comeca ai, como eu nao tenho as filds dos campos que eu quero pois algums so tem o ID pra fazer referncia a outras tabelas. Preciso saber como carregar essa grid com os dados no formulario do Crystal?
Desculpe qualquer coisa..
e desde ja agradeco...