none
Como cargar los datos de un combobox a un datagridview RRS feed

  • Pregunta

  • Buen día

    Tengo una duda con respecto a como mostrar todos los datos relacionados a la opción en el combobox, es decir en el combobox tengo la opcion de mostrar por ejemplo manzana y yo quiero mostrar en el datagridview la información respectiva a la manzana como codigo, valor,etc.

    coloqué este código en el evento del boton y solo me trae el primer valor dataGridViewProductos.Rows.Add(comboBoxProductos.Text);

    Muchas gracias a quien me pueda ayudar.

    martes, 19 de febrero de 2019 0:49

Todas las respuestas

  • si es que estas usando base de datos tendria que hacer primero una busqueda 

    Select * from tutabla where producto =comboBoxProductos.Text;

    dataGridView.Items.Clear();

    dataGridView.dataSource = BusquedaQue realizaste

     

    Si no usas base de datos entonces se ocupa mas informacio

    para poder ayudarte

    martes, 19 de febrero de 2019 2:12
  • Que pena si me faltó suministar más información, bueno en primer lugar si estoy utilizando una base de datos y utilizo este metodo para realizar el select de los campos que deseo mostrar:

    public DataTable MostrarProductos()
            {
                DataTable dt = new DataTable();
                try
                {
                    using (SqlConnection Conn = MiConexion.ObtenerConexion())
                    {
                        SqlCommand comando = new SqlCommand(string.Format("SELECT proCodigo, proDescripcion,proValor,proCantidad FROM TB_Productos"), Conn);
                        SqlDataAdapter adaptador = new SqlDataAdapter(comando);
                        adaptador.Fill(dt);
                    }
                }
                catch(SqlException e)
                {
                    MessageBox.Show("Error a listar los productos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    MessageBox.Show("Error al listar los productos ", e.Message);
                }

                return dt;
            }

    luego utilizo este metodo para cargar los valores en el combobox:

    private void FrmProductos_Load(object sender, EventArgs e)
            {
                GestionProducto mostarLista =new GestionProducto();
                comboBoxProductos.DataSource = mostarLista.MostrarProductos();
                comboBoxProductos.DisplayMember = "proDescripcion";
                comboBoxProductos.ValueMember = "proCodigo";
            }

    Este es el boton:

    private void BtnConsultarProductos_Click(object sender, EventArgs e)
            {
                dataGridViewProductos.Rows.Add(comboBoxProductos.SelectedValue,comboBoxProductos.Text);
            }

    De esta forma solo trae el codigo,descripcion,falta valor y cantidad.

    Lo que no se es como al seleccionar un dato del combobox por ejemplo vaso, me muestre en el datagridview no solo el campo descripcion con el nombre del producto que para este caso es vaso, si no que adicionalmente me traiga los otros datos el valor, cantidad,etc.

    No se si me hice entender muchas gracias


    john

    miércoles, 20 de febrero de 2019 4:41
  • Hola! Mi pregunta es... ¿Por qué realizas tal operación en un combobox? , técnicamente ¿lo que necesitas es una búsqueda? Imagina que tengas 10,000 registros, nadie va a buscar tal registro en los 10,000 registros del combobox. Sería mejor que lo hicieras con un textbox y programas una búsqueda.

    Pero si necesitas resolver tu caso en tu combobox, dame tiempo para hacerlo y enviarte el código. Luego editaré este post.

    • Editado ReyneerLeon miércoles, 20 de febrero de 2019 4:48
    miércoles, 20 de febrero de 2019 4:47
  •  aqui en tu

    SqlCommand comando = new SqlCommand(string.Format("SELECT proCodigo, proDescripcion,proValor,proCantidad FROM TB_Productos"), Conn);

    agregale

    SqlCommand comando = new SqlCommand(string.Format("SELECT proCodigo, proDescripcion,proValor,proCantidad FROM TB_Productos where proCodigo= comboBoxProductos.Value"), Conn);

    // con esta buscar por descripcion

    o

    // con esta buscas por codigo

    SqlCommand comando = new SqlCommand(string.Format("SELECT proCodigo, proDescripcion,proValor,proCantidad FROM TB_Productos where proDescripcion= comboBoxProductos.Text"), Conn);

    y luego

    private void BtnConsultarProductos_Click(object sender, EventArgs e)
            {
               

    dataGridViewProductos.datasouce = MostrarProductos();

    }

    y creo que esto bastara

    miércoles, 20 de febrero de 2019 5:41
  • Buen día Marti

    Tengo un error y me sale esto:

    Tambien en la compilación me sale esto:

    System.ArgumentException: 'No se puede enlazar con el nuevo miembro de presentación.
    Nombre del parámetro: newDisplayMember'

    y señala este codigo:  comboBoxProductos.ValueMember = "proCodigo";

    Gracias intentaré boorando esta linea, pero en caso de no ser positivo el resultado, espero la ayuda.


    john

    miércoles, 20 de febrero de 2019 22:34
  • Buen dia ReyneerLeon, comprendo su inquietud pero estoy nuevo en el lenguaje y no lo comprendo mucho, solo es un requerimiento que me hacen donde estudio, pero si me puedes ayudar se lo agradecería mucho.

    john

    miércoles, 20 de febrero de 2019 22:36
  • creo que debes revisar la sintaxis de SQL

    SqlCommand comando = new SqlCommand(string.Format("SELECT proCodigo, proDescripcion,proValor,proCantidad FROM TB_Productos where proCodigo= '{comboBoxProductos.Value}'"), Conn);

    jueves, 21 de febrero de 2019 3:00
  • Buen día

    Nuevamente me lanza un error, y quite la esta parte del código y no resulta string.Format:


    john

    jueves, 21 de febrero de 2019 22:23
  • ok Entonces 

    string sql = $"SELECT proCodigo, proDescripcion,proValor,proCantidad FROM TB_Productos where proCodigo= '{comboBoxProductos.Value}'";

    SqlCommand comando = new SqlCommand(sql, Conn);

    viernes, 22 de febrero de 2019 3:07
  • hola

    NUNCA concatenes los valores de los parametros en el string, tienes que usar parametros

    string query = "SELECT proCodigo, proDescripcion,proValor,proCantidad FROM TB_Productos where proCodigo= @codigo";
    
    SqlCommand comando = new SqlCommand(query, Conn);
    comando.Paramters.AddWithValue("@codigo", comboBoxProductos.SelectedValue);

    y si el campo "proCodigo" en la tabla es numerico respecta los tipos de datos

    comando.Paramters.AddWithValue("@codigo", Convert.ToInt32(comboBoxProductos.SelectedValue));

    Ademas se usa la propiedad SelectedValue para tomar la seleccion, pero sino funciona revisa de invertir esta parte del codigo

        GestionProducto mostarLista =new GestionProducto();
    
        comboBoxProductos.DisplayMember = "proDescripcion";
        comboBoxProductos.ValueMember = "proCodigo";            
    
         comboBoxProductos.DataSource = mostarLista.MostrarProductos();
    primero asigna las propiedades y depsues el datasource

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 22 de febrero de 2019 5:00
  • Buen día

    realicé los cambios, pero me subraya el comboBoxProductos

    en esta parte

    comando.Paramters.AddWithValue("@codigo", comboBoxProductos.SelectedValue);

    no se a que se deba, la funcion mostar lista la tengo en un archivo diferente al formulario de productos en el que esta el boon para consultar.


    john

    lunes, 25 de febrero de 2019 3:19
  • has un cast a int en

    o crea un tem

    (int)comboBoxProductos.SelectedValue

    int Codigo = (int)comboBoxProductos.SelectedValue

    o

    int Codigo = comboBoxProductos.SelectedValue as int


    lunes, 25 de febrero de 2019 3:54