none
Retornando Objeto RRS feed

  • 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

    quarta-feira, 7 de novembro de 2007 09:50

Respostas

  •  

    Boa tarde! cara eu estou com esse problema, ja fiz array list :

     

    ArrayList testeLista = new ArrayList();

    testeLista.Add(dataSet);

    oRel.SetDataSource(testeLista);

     

    Até rodou mais como eu passo o objeto com os campos?

     

    Desde ja agradeco..

    quarta-feira, 24 de setembro de 2008 15:15
  • 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)ClienteListaIdea;
    //se web:
    //Response.Write(ClienteRecuperado.Nome);
    //se desktop:
    //Console.Write(
    ClienteRecuperado.Nome);
    }

    Flw!!

    Atenciosamente
    Carlos Duarte





    quinta-feira, 25 de setembro de 2008 16:41
  • 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>
    <id>1</id>
    </cliente>
    <cliente>
    <nome>Cliente 2</nome>
    <id>2</id>
    </cliente>
    .
    .
    .

    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!
    terça-feira, 30 de setembro de 2008 19:39

Todas as Respostas

  • Douglas, você pode usar o list, que funciona mais ou menos como um array.

     

    Fábio Nascimento

    MCP- VB.NET

    quarta-feira, 7 de novembro de 2007 11:14
  • Ok, deu certo.

     

    Obrigado.

    quarta-feira, 7 de novembro de 2007 21:11
  •  

    Boa tarde! cara eu estou com esse problema, ja fiz array list :

     

    ArrayList testeLista = new ArrayList();

    testeLista.Add(dataSet);

    oRel.SetDataSource(testeLista);

     

    Até rodou mais como eu passo o objeto com os campos?

     

    Desde ja agradeco..

    quarta-feira, 24 de setembro de 2008 15:15
  • 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)ClienteListaIdea;
    //se web:
    //Response.Write(ClienteRecuperado.Nome);
    //se desktop:
    //Console.Write(
    ClienteRecuperado.Nome);
    }

    Flw!!

    Atenciosamente
    Carlos Duarte





    quinta-feira, 25 de setembro de 2008 16:41
  • 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>
    <id>1</id>
    </cliente>
    <cliente>
    <nome>Cliente 2</nome>
    <id>2</id>
    </cliente>
    .
    .
    .

    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!
    terça-feira, 30 de setembro de 2008 19:39
  • 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...

    sexta-feira, 3 de outubro de 2008 14:58