Usuário com melhor resposta
Como diferenciar dois ou mais nomes iguais em uma listBox

Pergunta
-
Ai galera, eu uso o seguinte codigo pra preencher minhas listBox
public void MostrarDados() { try { string Conexao; Conexao = ConfigurationManager.ConnectionStrings["LanConnectionString"].ConnectionString; SqlConnection sqlConexao = new SqlConnection(Conexao); SqlCommand cmd = new SqlCommand("SELECT Codigo_Cliente, Nome FROM Clientes", sqlConexao); sqlConexao.Open(); SqlDataReader leitor = cmd.ExecuteReader(); listBox1.Items.Clear(); while (leitor.Read()) { listBox1.Items.Add(leitor["Nome"]); } } catch (Exception erro) { MessageBox.Show("Algo inesperado ocorreu!", "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
Nesta listBox fica os nomes de todos os clientes cadastrados ai quando eu clico em algum nome faz uma pesquisa no banco de dados com o nome clicado e me retorna todos os dados referentes aquele cliente, mas quando tem dois ou mais nomes iguais na list a minha pesquisa ñ consegui diferenciar e acaba retornando os dados referente a o ultimo que foi cadastrado com aquele msm nome. Será que alguem ai pode me ajudar, ficarei mto grato!
Obrigado e paz a todos!
Obs: Eu sei q tem como fazer com DataSource, mas da erro na minha consulta, e tbm ñ consigo limpar a list!
- Editado Iam Medeiros quarta-feira, 20 de março de 2013 01:36
Respostas
-
Olá,
A busca no banco deve ser feita sempre por um identificador, para evitar o problema que você relatou.
Para resolver você deve inserir no listbox os itens com seus respectivos identificadores.
Por exemplo:
struct Pessoa { public int ID { get; set; } public string Nome { get; set; } } public partial class Form1 : Form { private void Form1_Load(object sender, EventArgs e) { listBox1.Items.Add(new Pessoa { ID = 1, Nome = "José" }); listBox1.Items.Add(new Pessoa { ID = 2, Nome = "Maria" }); listBox1.Items.Add(new Pessoa { ID = 3, Nome = "José" }); } private void button1_Click(object sender, EventArgs e) { int ID = ((Pessoa)listBox1.SelectedItem).ID; } }
Note que eu inserí no listbox elementos do tipo pessoa que é uma struct que criei. Para resgatar o código do item selecionado utilize a sintaxe que coloquei no clique do botão. Com o código em mãos é só fazer a consulta no banco e buscar os dados que você quer.
Mais um detalhe, você deve alterar o valor de duas propriedades do ListBox: ValueMember = ID e DisplayMember = Nome. Isso vai fazer com que o listbox mostre o nome da pessoa, mas quando o valor for resgatado ele irá pegar o ID.
- Sugerido como Resposta Leonardo.Garcia quarta-feira, 20 de março de 2013 04:09
- Marcado como Resposta Felipo Gonçalves quarta-feira, 20 de março de 2013 17:29
Todas as Respostas
-
Olá,
A busca no banco deve ser feita sempre por um identificador, para evitar o problema que você relatou.
Para resolver você deve inserir no listbox os itens com seus respectivos identificadores.
Por exemplo:
struct Pessoa { public int ID { get; set; } public string Nome { get; set; } } public partial class Form1 : Form { private void Form1_Load(object sender, EventArgs e) { listBox1.Items.Add(new Pessoa { ID = 1, Nome = "José" }); listBox1.Items.Add(new Pessoa { ID = 2, Nome = "Maria" }); listBox1.Items.Add(new Pessoa { ID = 3, Nome = "José" }); } private void button1_Click(object sender, EventArgs e) { int ID = ((Pessoa)listBox1.SelectedItem).ID; } }
Note que eu inserí no listbox elementos do tipo pessoa que é uma struct que criei. Para resgatar o código do item selecionado utilize a sintaxe que coloquei no clique do botão. Com o código em mãos é só fazer a consulta no banco e buscar os dados que você quer.
Mais um detalhe, você deve alterar o valor de duas propriedades do ListBox: ValueMember = ID e DisplayMember = Nome. Isso vai fazer com que o listbox mostre o nome da pessoa, mas quando o valor for resgatado ele irá pegar o ID.
- Sugerido como Resposta Leonardo.Garcia quarta-feira, 20 de março de 2013 04:09
- Marcado como Resposta Felipo Gonçalves quarta-feira, 20 de março de 2013 17:29
-