none
Cargar o seleccionar el ID desde un Combobox* RRS feed

  • Pregunta

  • Hola! ¿Cómo hago para seleccionar o que se cargue el ID de la BD mediante un dato seleccionado en el Combobox?. Estoy trabajando en un sistema pero la tabla tiene datos foráneos y no puedo cargar cadenas directamente al campo foráneo.
    Este es mi código:

    public void cargarComboboxes2(ComboBox comboboxx2) {
    
                String instruccion = "SELECT idarea,nombreA from unigym.area";
    
                comboboxx2.Items.Clear();
                comando.CommandType = CommandType.Text;
                comando.CommandText = instruccion;
                comando.Connection = conexion.conex();
                comando.ExecuteNonQuery();
                DataTable dt = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(comando);
                da.Fill(dt);
    
                foreach (DataRow dr in dt.Rows) {
                    comboboxx2.Items.Add(dr["nombreA"].ToString());
    
                    //int x = Convert.ToInt32(dr["idarea"].ToString());
                    //comboboxx2.SelectedValue = x;
    
    
    
                }
    
    
            }

    Con esto cargo los datos del combobox: 

    comboboxx2.Items.Add(dr["nombreA"].ToString());

    Yo intenté hacer que al seleccionar tal valor se carga el ID con este código:

    int x = Convert.ToInt32(dr["idarea"].ToString());
    comboboxx2.SelectedValue = x;

    Pero no me funciona, no me carga o selecciona el ID. ¿Algo mal estoy haciendo?




    • Editado ReyneerLeon jueves, 21 de febrero de 2019 0:22
    jueves, 21 de febrero de 2019 0:17

Respuestas

  • hola

    Analiza esta implementacion

    public DataTable cargarComboboxes2() 
    {
    	var conn = conexion.conex();
    	
    	string instruccion = "SELECT idarea,nombreA from unigym.area";
    	SqlCommand comando = new SqlCommand(instruccion, conn);
    
    	DataTable dt = new DataTable();
    	SqlDataAdapter da = new SqlDataAdapter(comando);
    	da.Fill(dt);
    	
    	return dt;
    }
    
    public void Form_Load(...)
    {
    	var dt = cargarComboboxes2();
    	comboboxx2.DisplayMember = "nombreA"; 
    	comboboxx2.ValueMember = "idarea";
    	comboboxx2.DataSource = dt; 
    
    }
    
    public void button1_Click()
    {
       var seleccion = comboboxx2.SelectedValue;
       
       //resto codigo
    }

    se usa el DataSource y puedes usar el SelectedValue para tomar la seleccion, tambien puedes asignarlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 21 de febrero de 2019 0:35

Todas las respuestas

  • hola

    Analiza esta implementacion

    public DataTable cargarComboboxes2() 
    {
    	var conn = conexion.conex();
    	
    	string instruccion = "SELECT idarea,nombreA from unigym.area";
    	SqlCommand comando = new SqlCommand(instruccion, conn);
    
    	DataTable dt = new DataTable();
    	SqlDataAdapter da = new SqlDataAdapter(comando);
    	da.Fill(dt);
    	
    	return dt;
    }
    
    public void Form_Load(...)
    {
    	var dt = cargarComboboxes2();
    	comboboxx2.DisplayMember = "nombreA"; 
    	comboboxx2.ValueMember = "idarea";
    	comboboxx2.DataSource = dt; 
    
    }
    
    public void button1_Click()
    {
       var seleccion = comboboxx2.SelectedValue;
       
       //resto codigo
    }

    se usa el DataSource y puedes usar el SelectedValue para tomar la seleccion, tambien puedes asignarlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 21 de febrero de 2019 0:35
  • Listo! Analicé bien tu código y me funcionó, pero tuve que convertir..., y lo metí en un messagebox solo para comprobar: 

    comboboxx2.DisplayMember = "nombreA";
                comboboxx2.ValueMember = "idarea"; //Field in the datatable which you want to be the value of the combobox 
                comboboxx2.DataSource = dt;
    
                var seleccion = comboboxx2.SelectedValue;
                int xx = Convert.ToInt32(seleccion);
                MessageBox.Show((xx).ToString());


    • Editado ReyneerLeon jueves, 21 de febrero de 2019 1:36
    jueves, 21 de febrero de 2019 1:34