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

Antonio Araujo

Responder

Posts

21/02/2013

Robson Alves

Que estranho, tem certeza que o erro está na hora de passar para a label?
Você faz databind no seu dropdown?
Veja qual o valor carregado por ele no momento de converter o selectedvalue para inteiro.
Responder

21/02/2013

Robson Alves

Considerando que o usuário criou outro post com o mesmo conteúdo e com a descrição mais completa, vou concluir este.
Responder

21/02/2013

Antonio Araujo

conitnua com o mesmo problema.. vou postar todos os metodos
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");
  }
}

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar