Array
(
)

Problema com o Combox

Ancelmo
   - 21 fev 2013

#Código

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'.
#Código
 private void cmbUnidade_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbUnidade.SelectedIndex >= 0)
            {
                int CodigoProduto = Convert.ToInt32(cmbUnidade.SelectedValue);
                lblCodigo.Text = CodigoProduto.ToString("0000000");
            }
        }

Robson Robsonalves.net
   - 21 fev 2013

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.

0
|
0

Robson Robsonalves.net
   - 21 fev 2013

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

0
|
0

Ancelmo
   - 21 fev 2013

conitnua com o mesmo problema.. vou postar todos os metodos
#Código

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
#Código
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

#Código
private void cmbUnidade_SelectedIndexChanged(object sender, EventArgs e)
{
  if (cmbUnidade.SelectedIndex >= 0)
  {
     int CodigoProduto = Convert.ToInt32(cmbUnidade.SelectedValue.ToString());
     lblCodigo.Text = CodigoProduto.ToString("0000000");
  }
}

0
|
0