Problema com o Combox
21/02/2013
0
NEG_Produto NEG_Produto = new NEG_Produto(); DataTable dtProduto = new DataTable(); dtProduto = NEG_Produto.getAllProdutos(); cmbProduto.DataSource = dtProduto; cmbProduto.DataSource = dtProduto; cmbProduto.DisplayMember = dtProduto.Columns["acdescricao"].ToString(); cmbProduto.ValueMember = dtProduto.Columns["accdproduto"].ToString(); cmbProduto.SelectedIndex = -1;
Na hora de converter para inteiro e visualizar o codigo do produto em uma Label dá o seguinte erro: Não é possível converter um objeto do tipo 'System.Data.DataRowView' no tipo 'System.IConvertible'.
private void cmbUnidade_SelectedIndexChanged(object sender, EventArgs e) { if (cmbUnidade.SelectedIndex >= 0) { int CodigoProduto = Convert.ToInt32(cmbUnidade.SelectedValue); lblCodigo.Text = CodigoProduto.ToString("0000000"); } }
Antonio Araujo
Posts
21/02/2013
Robson Alves
Você faz databind no seu dropdown?
Veja qual o valor carregado por ele no momento de converter o selectedvalue para inteiro.
21/02/2013
Robson Alves
21/02/2013
Antonio Araujo
public DataTable getAllProdutos() { try { using (MySqlConnection ConnMySQL = DAO_FactoryMySql.getConnectionMySql()) { using (MySqlCommand CommMySQL = new MySqlCommand()) { CommMySQL.Connection = ConnMySQL; CommMySQL.CommandType = System.Data.CommandType.Text; CommMySQL.CommandText = "SELECT accdproduto, acdescricao FROM acnetprodutos"; DataTable dt = new DataTable(); MySqlDataAdapter dataAdpter = new MySqlDataAdapter(CommMySQL); dataAdpter.Fill(dt); return dt; } } } catch (Exception err) { throw new Exception("Erro na busca do Produto.: " + err.InnerException.Message); } }
este metodo retorna a datatable com os dados
... da minha classe de negocio eu pego os valores e seto no combox carregado no Load do Form
NEG_Produto NEG_Produto = new NEG_Produto(); DataTable dtProduto = new DataTable(); dtProduto = NEG_Produto.getAllProdutos(); cmbProduto.DataSource = dtProduto; cmbProduto.DataSource = dtProduto; cmbProduto.DisplayMember = dtProduto.Columns["acdescricao"].ToString(); cmbProduto.ValueMember = dtProduto.Columns["accdproduto"].ToString(); cmbProduto.SelectedIndex = -1;
depois passo key para o labe e dá o problema
private void cmbUnidade_SelectedIndexChanged(object sender, EventArgs e) { if (cmbUnidade.SelectedIndex >= 0) { int CodigoProduto = Convert.ToInt32(cmbUnidade.SelectedValue.ToString()); lblCodigo.Text = CodigoProduto.ToString("0000000"); } }
Clique aqui para fazer login e interagir na Comunidade :)