Inquiridor
Listar tabela SQL em um Combobox

Pergunta
-
Olá sou novato no c# e estou com uma dúvida que acho que muitos de vocês tiveram no início de suas carreiras. A dúvida é como listar dados de uma tabela no banco de dados em um combobox. Na verdade eu já consegui fazer os dados aparecer só estou com dificuldades para recuperar o valor no caso a id.
A ideia é listar as cidades no combobox para que o usuário diga qual sua cidade de origem.
Vamos aos códigos:
Este é meu método que vai até o banco joga todos os resultados em DataTable e depois transforma em uma Lista( de Cidades):
public CidadeColecao ConsultarCidades() { try { CidadeColecao cidadeColecao = new CidadeColecao(); //Limpando os parametros conexao.LimparParametros(); //Execultado a consulta DataTable dataTableCidade = conexao.ExecultarConsulta(CommandType.StoredProcedure, "uspCidadeConsultar"); foreach (DataRow linha in dataTableCidade.Rows) { Cidade cidade = new Cidade(); cidade.IDCidade = Convert.ToInt32(linha["IDCidade"]); cidade.NomeCidade = Convert.ToString(linha["NomeCidade"]); //Adicionando a linha na colecao cidadeColecao.Add(cidade); } return cidadeColecao; } catch (Exception ex) { throw new Exception(ex.Message); } }
Até aqui tudo beleza. Com minha lista de Cidades em mãos vou adiciona-la no DataSource do meu Combobox.
BairroNegocio bairroNegocio = new BairroNegocio(); CidadeColecao cidadeColecao = bairroNegocio.ConsultarCidades(); comboBoxCidade.DataSource = cidadeColecao; comboBoxCidade.DisplayMember = "NomeCidade"; comboBoxCidade.ValueMember = "IDCidade";
Até aqui tudo bem, todas as cidades da minha tabela SQL aparecem no Combobox.
Como pode ser visto no código eu digo que o "NomeCidade" será exibido. E seu valor deveria ser da "IDCidade"
A dúvida é como recuperar esse valor de IDCidade para poder cadastrar no SQL.
Criei esse teste para ver o valor que me retona.
string teste = comboBoxCidade.SelectedItem.ToString(); MessageBox.Show(teste, "Teste");
e o que aparece é apenas Objetos.Cidade e não o valor da id.
Obejetos é a namespace e Cidade é o objeto...
Não tem nenhum erro de sitaxe, apenas isso. Acho que ta faltando uma besterinha. Na lógica esse IDCliente já esta dentro do objeto de transferência. Como eu ja tinha dito, o NomeCidade já aparece no combobox faltando apenas pegar a IDCliente que é o que preciso.
Se alguém poder me da essa luz, eu agradeço. Qualquer dúvida no código podem perguntar.
Obrigado...A ideia é listar as cidades no combobox para que o usuário diga qual sua cidade de origem.
A ideia é listar as cidades no combobox para que o usuário diga qual sua cidade de origem.
Todas as Respostas
-
Olá Erisson,
falta pouco mesmo, como seu Id está na propriedade ValueMember para recuperar use a propriedade SelectedValue veja :
int id = (int)suaCombo.SelectedValue;
Veja que selectedValue retorna object por isso fiz o cast para int pois acredito que o Id seja int, basta fazer o cast para o tipo adequado que vai funcionar !
-
Deu certo amigo, muito obrigado. Você tirou uma dúvida que eu passei o dia tentando entender.
Agora só mais uma dúvida como eu coloco este valor no meu objeto de transferência?
- Editado Erisson Costa sexta-feira, 13 de junho de 2014 22:21
-
Deu certo amigo, muito obrigado. Você tirou uma dúvida que eu passei o dia tentando entender.
Agora só mais uma dúvida como eu coloco este valor no meu objeto de transferência?
Olá, basta inserir o valor vamos supor que meu objeto de transferencia se chama Tb1 e eu quero passar o id e o texto para o objeto Tb1 veja :
Tb1 tb = new Tb1(); tb.Id = (int)combo.SelectedValue; tb.Nome = combo.Text;