Usuário com melhor resposta
Exibição do GridView

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
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
- Editado Alexandre Maranhão sábado, 7 de janeiro de 2017 10:43
- Marcado como Resposta NerdClick segunda-feira, 9 de janeiro de 2017 11:09
Todas as Respostas
-
-
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 -
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
- Editado Alexandre Maranhão sábado, 7 de janeiro de 2017 10:43
- Marcado como Resposta NerdClick segunda-feira, 9 de janeiro de 2017 11:09