Array
(
)

c# duvida datagridview

Ciotti
   - 07 out 2010

  boa noite a todos sou novo em c#, estou treinando com camada tendo feito as camadas
de :
clienteModel,ClienteDao e ClienteRn.
fiz tudo certo mas quando faco uma pesquisa , nao consigo fazer que meu datagridview traga as
informacoes,o mesmo fica estatico, sabendo que esta trazendo as informacoes corretas pois dou um show na query apos executar.
Abs a todos

classeDao:

public ClienteModel pesquisaCliente(int pesquisa)
        {
            try
            {
                conexao = new SqlConnection(conexao_sqlserver);
                SqlCommand sql = new SqlCommand("select * from cliente where codcli = @pesquisa", conexao);
                sql.Parameters.AddWithValue("@pesquisa", pesquisa);
                conexao.Open();
                SqlDataReader datareader;
                ClienteModel obj_cliente = new ClienteModel();
                datareader = sql.ExecuteReader(CommandBehavior.CloseConnection);

                while (datareader.Read())
                {
                    obj_cliente.Nome = datareader["Nome"].ToString();
                    obj_cliente.Endereco = datareader["Endereco"].ToString();
                    obj_cliente.Telefone = datareader["Telefone"].ToString();
                }
                return obj_cliente;
            }
            catch (Exception erro)
            {
                throw erro;
            }

            finally
            {
                conexao.Close();
            }
        }

classeRn:

public ClienteModel pesquisaClienteDal(int pesquisa)
        {
         

            try
            {

                DalCliente clienteDal = new DalCliente();
                return clienteDal.pesquisaCliente(pesquisa);
                //cria objeto bairroDal
                // chama metodo grava bairro(BairroDal.cs)
                // passa valores para o metodo(bairroModel.cs)

            }
            catch (Exception erro)
            {
                throw erro;
            }

        }

classeModel:

class ClienteModel
    {
        string nome;
        string endereco;
        string tel;

        public string Nome
        {
            get { return nome;}
            set {nome = value ;}

        }

        public string Endereco
        {
            get { return endereco;}
            set { endereco = value; }
       
        }

        public string Telefone
        {
            get { return tel; }
            set { tel = value; }

        }   
   
    }

André Andrade
   - 08 out 2010

Ola para o datagridview receber os valores vc precisa passar para ele um datasource que pode ser um datareader, datatable ou um sqldatasource. Lembrando sempre em chamar o método DataBind() do grid para que as informações possam aparecer caso contrario ele nao ira mostrar os resultados. Mas pelo que vi ali no seu codigo não achei a parte em que vc passa alguma fonta de dados para o grid.

Fabio Rosa
   - 08 out 2010

Olá,
Pelo seu código você está retornando apenas o último cliente lido pelo reader.....
Se o seu objetivo é retornar todos os clientes, no lugar de instanciar o ClienteModel, você deveria instanciar uma Lista de ClienteModel e adicionar cada cliente na lista antes de fechar o While do reader....

Ciotti
   - 08 out 2010

ola amigos vcs poderiam dar um exemplo, nao consigo nem a pau setar o datagridview lembrando a todos que o datagridview esta em meu form1 e como faco para setar dentro das classes.abs.

Allan Roberto
   - 09 out 2010

companheiro... aki no site da devmedia tem um artigo q tem um modelo de consulta... a aplicação é em 3 camadas... acho q vai te ajudar a resolver...
http://www.devmedia.com.br/post-7921-Desenvolvimento-Multicamadas-em-Csharp--C-csharp-Parte-4-Exemplo-pratico-[Camada-de-Apresentacao].html
tenta aí se não resolver mando o trecho de código pra te ajudar

Ciotti
   - 10 out 2010

  Ola amigo, fico super agradecido pela força, ajudou muito, mas vejo que trabalhar com camadas não é tão simples como parece, pois minha duvida é simples para quem ja manja do assunto, minha duvida é essa tenho minha classe Dao onde faço a pesquisa por cliente passando um parametro, so que na pesquisa nao consegui chamar meu datagriview que esta em um form ,olhando o exemplo abaixo na classe Dao,faço um select e um loop,minha duvida é onde devo chamar meu datagriview ,dentro da classe Dao ? E se realmente é ai que devo chamar, vi no exemplo que vc me passou,o cara faz a pesquida dentro do envento do botao ou seja ele monta o select e nao usa a classe Dao é assim que se deve trabalhar com camada ?
Cara muito obrigado , forte abraco.
Exemplo:

public ClienteModel pesquisaCliente(int pesquisa)
        {
            try
            {
                conexao = new SqlConnection(conexao_sqlserver);
                SqlCommand sql = new SqlCommand("select * from cliente where codcli = @pesquisa", conexao);
                sql.Parameters.AddWithValue("@pesquisa", pesquisa);
                conexao.Open();
                SqlDataReader datareader;
                ClienteModel obj_cliente = new ClienteModel();
                datareader = sql.ExecuteReader(CommandBehavior.CloseConnection);

                while (datareader.Read())
                {
                    obj_cliente.Nome = datareader["Nome"].ToString();
                    obj_cliente.Endereco = datareader["Endereco"].ToString();
                    obj_cliente.Telefone = datareader["Telefone"].ToString();
                }
                return obj_cliente;
            }
            catch (Exception erro)
            {
                throw erro;
            }

            finally
            {
                conexao.Close();
            }
        }

Allan Roberto
   - 14 out 2010


kra dá uma olhadinha nesse fórum
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/fc5dae25-70bc-46e2-a3d2-1120e6da7cb4

Vinicius Vieira
   - 15 out 2010

A dao não deve fazer nada no data grid;O correto seria você retornar um datatable por exemplo na dao, na bll ter um método que chama essa da dao simplesmente por exemplo retorna o datatable, pois a apresentação não deve ter referencia a classe de dados e sim a de negocio, e na apresentacao voce pega esse datatable e set como datasource de um bindsource que por sua vez está ligado ao datagrid.Se quiser me fala que eu posto um exemplo do que eu to falando, oka ?