c# duvida datagridview
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; }
}
}
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; }
}
}
Ciotti
Curtidas 0
Respostas
André Andrade
07/10/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.
GOSTEI 0
Fabio Rosa
07/10/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....
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....
GOSTEI 0
Ciotti
07/10/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.
GOSTEI 0
Allan Roberto
07/10/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...
https://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
https://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
GOSTEI 0
Ciotti
07/10/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();
}
}
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();
}
}
GOSTEI 0
Allan Roberto
07/10/2010
kra dá uma olhadinha nesse fórum
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/fc5dae25-70bc-46e2-a3d2-1120e6da7cb4
GOSTEI 0
Vinicius Vieira
07/10/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 ?
GOSTEI 0