none
Exibição do GridView RRS feed

  • Pergunta

  • Boa tarde galera seguinte estou tendo esse peq problema , eu coloco parte do nome e clico em pesquisar, ele só retorna a parte do cabeçalho sem os dados preenchidos. ( a pelo menos 3 registros no bando de dados ) Todos estao devidamente refenciados uns aos outros no projeto.

    O Cód é do botão é:

     
            private void buttonPesquisar_Click(object sender, EventArgs e)
            {
                ClienteNegocios clienteNegocios = new ClienteNegocios();
                ClienteColecao clienteColecao = new ClienteColecao();
                clienteColecao = clienteNegocios.ConsultarPorNome(boxpesquisa.Text);
    
                gridPrincipal.DataSource = null;
                gridPrincipal.DataSource = clienteColecao;
              
    
                 gridPrincipal.Update();
               gridPrincipal.Refresh();
            }


    O meu cliente negocios:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ObjetoTransferencia
    {
        public class ClienteColecao : List<Cliente>
        {
    
        }
    }
    

    e o cliente:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ObjetoTransferencia
    {
        public class Cliente
        {
            public int IdCliente { get; set; }
            public string Nome { get; set; }
            public DateTime DataNascimento { get; set; }
            public Boolean Sexo { get; set; }
            public decimal LimiteCompra { get; set; }
    
        }
    }

    E o cod no SqlExpress

    PROCEDURE [dbo].[uspClienteConsultarPorNome]
    	@Nome varchar(50)
    
    AS
    BEGIN
    
    	SELECT
    		IdCliente,
    		Nome,
    		DataNascimento,
    		Sexo
    		LimiteCompra
    	FROM
    		tblCliente
    	WHERE
    		Nome like '&' + @Nome + '&'
    
    END

    sexta-feira, 6 de janeiro de 2017 19:29

Respostas

  • blz,

    eu faria uma modificação ai no seu código no botão localizar eu adicionaria um método AtualizaGrid() para localizar.

    private void btnPesquisar_Click(object sender, EventArgs e)
            {
    
                AtualizarGrid();
            }
    private void AtualizaGrid()
    {
    
    ClienteNegocios clienteNegocios = new ClienteNegocios();
                ClienteColecao clienteColecao = new ClienteColecao();
                clienteColecao = clienteNegocios.ConsultarPorNome(boxpesquisa.Text);
    
                gridPrincipal.DataSource = null;
                gridPrincipal.DataSource = clienteColecao;
              
    
                 gridPrincipal.Update();
               gridPrincipal.Refresh();
    
    }

    porém o que pude notar o erro está na storedProcedure

    veja a modificação:

    PROCEDURE [dbo].[uspClienteConsultarPorNome]
    	@Nome varchar(50)
    
    AS
    BEGIN
    
    	SELECT
    		IdCliente,
    		Nome,
    		DataNascimento,
    		Sexo
    		LimiteCompra
    	FROM
    		tblCliente
    	WHERE
    		Nome like '&' + @Nome + '&'
    
    END

    	Nome like '%' + @Nome + '%'	
    
    

    no lugar de & modifique para % e faça o teste


    Alexandre Maranhão - amprog@outlook.com



    sábado, 7 de janeiro de 2017 10:39

Todas as Respostas

  • blz,

    NerdClick

    qual camada você faz a conexão com o banco ?


    Alexandre Maranhão - amprog@outlook.com

    sexta-feira, 6 de janeiro de 2017 19:46
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data;
    using System.Data.SqlClient;
    using AcessoBancoDados.Properties;
    
    namespace AcessoBandoDeDados
    {
    
        public class AcessoDadosSqlSever
        {
            //Cria a aconexão
            private SqlConnection CriarConexao()
            {
                return new SqlConnection(Settings.Default.stringConexao);
            }
            //Paranetros que vão para banco
            private SqlParameterCollection sqlparametercollection = new SqlCommand().Parameters;
    
            public void LimparParametros()
            {
                sqlparametercollection.Clear();
            }
    
            public void AdiconarParametros(string nomeParametro, object valorParametro)
            {
                sqlparametercollection.Add(new SqlParameter(nomeParametro, valorParametro));
            }
    
            public object ExecutarManipulacao(object storedProcedure, string v)
            {
                throw new NotImplementedException();
            }
    
            // alterar inserir excluir
            public object ExecutarManipulacao(CommandType commandType, string nomeStoreProcedureOuTextoSql)
            {
    
                try
                {
                    // Criar conexão
                    SqlConnection sqlConnection = CriarConexao();
                    //Abrir Conexão
                    sqlConnection.Open();
                    //Criar o comando que vai levar a informação para o banco.
                    SqlCommand sqlcommand = sqlConnection.CreateCommand();
                    //Colocando as coisas dentro do comando ( dentro de caixa que vai trafegar na conexão)
                    sqlcommand.CommandType = commandType;
                    sqlcommand.CommandText = nomeStoreProcedureOuTextoSql;
                    sqlcommand.CommandTimeout = 7200; // Em segudos
    
                    foreach (SqlParameter sqlParameter in sqlparametercollection)
                    {
                        sqlcommand.Parameters.Add(new SqlParameter(sqlParameter.ParameterName, sqlParameter.Value));
                    }
    
                    // Exevutar o comando, ou seja mandar o comando ir até o bando de dados.
                    return sqlcommand.ExecuteScalar();
                }
    
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
    
            }
    
            // Consultar registros do banco de dados
            public DataTable ExecutarConsulta(CommandType commandType, string nomeStoreProcedureOuTextoSql)
            {
    
                try
                {
                    // Criar conexão
                    SqlConnection sqlConnection = CriarConexao();
                    //Abrir Conexão
                    sqlConnection.Open();
                    //Criar o comando que vai levar a informação para o banco.
                    SqlCommand sqlcommand = sqlConnection.CreateCommand();
                    //Colocando as coisas dentro do comando ( dentro de caixa que vai trafegar na conexão)
                    sqlcommand.CommandType = commandType;
                    sqlcommand.CommandText = nomeStoreProcedureOuTextoSql;
                    sqlcommand.CommandTimeout = 7200; // Em segudos
    
                    foreach (SqlParameter sqlParameter in sqlparametercollection)
                    {
                        sqlcommand.Parameters.Add(new SqlParameter(sqlParameter.ParameterName, sqlParameter.Value));
                    }
    
                    //CriarConexao um adaptador
                    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlcommand);
    
                    //datatable = tabela de dados vazia onde vou colocar os dados que vem do banco
                    DataTable dataTable = new DataTable();
    
                    //Mandar o comando ir até o banco buscar os dados e o adaptador preecher o datatable
                    sqlDataAdapter.Fill(dataTable);
    
                    return dataTable;
                }
    
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
    
            }
    
    
        }
    }
    
    
    
    
    
    
    Essa é a camada que faz a conexao
    sexta-feira, 6 de janeiro de 2017 20:05
  • blz,

    eu faria uma modificação ai no seu código no botão localizar eu adicionaria um método AtualizaGrid() para localizar.

    private void btnPesquisar_Click(object sender, EventArgs e)
            {
    
                AtualizarGrid();
            }
    private void AtualizaGrid()
    {
    
    ClienteNegocios clienteNegocios = new ClienteNegocios();
                ClienteColecao clienteColecao = new ClienteColecao();
                clienteColecao = clienteNegocios.ConsultarPorNome(boxpesquisa.Text);
    
                gridPrincipal.DataSource = null;
                gridPrincipal.DataSource = clienteColecao;
              
    
                 gridPrincipal.Update();
               gridPrincipal.Refresh();
    
    }

    porém o que pude notar o erro está na storedProcedure

    veja a modificação:

    PROCEDURE [dbo].[uspClienteConsultarPorNome]
    	@Nome varchar(50)
    
    AS
    BEGIN
    
    	SELECT
    		IdCliente,
    		Nome,
    		DataNascimento,
    		Sexo
    		LimiteCompra
    	FROM
    		tblCliente
    	WHERE
    		Nome like '&' + @Nome + '&'
    
    END

    	Nome like '%' + @Nome + '%'	
    
    

    no lugar de & modifique para % e faça o teste


    Alexandre Maranhão - amprog@outlook.com



    sábado, 7 de janeiro de 2017 10:39