none
ELIMINAR ITEM SELECCIONADO DE UN COMBOBOX EN C# RRS feed

  • Pregunta

  • Hola, buenos dias, tengo un combobox compuesto por numeros de tarjetas que lo lleno por medio de una consulta sql en un datatable, al seleccionar un item del combo deseo que ese item se me cargue en un textbox e inmediatamente se elimine ese item del combobox.

    Cualquier ayuda que me puedan brindar estare muy agradecido.

     

    domingo, 25 de noviembre de 2012 13:28

Respuestas

  • hola

    si el item pertenece a un datatable es de este que debes quitarlo

    DataTable dt = DataGridView1.DataSource as DataTable;
    
    DataRow[] rows = dt.Select(string.Format("id = {0}", combobox1.SelectedValue));
    
    if(rows.Length > 0){
        dt.Rows.Remove(rows[0]);
    }
    
    DataGridView1.DataSource = dt;


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta JCORBETTO lunes, 26 de noviembre de 2012 15:44
    domingo, 25 de noviembre de 2012 16:48
  • lo podrias poner en el evento

    SelectionChangeCommited

    entocnes ante la selccion del usuario aplciarias el codigo que propuse


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta JCORBETTO lunes, 26 de noviembre de 2012 15:43
    lunes, 26 de noviembre de 2012 14:36

Todas las respuestas

  • hola

    si el item pertenece a un datatable es de este que debes quitarlo

    DataTable dt = DataGridView1.DataSource as DataTable;
    
    DataRow[] rows = dt.Select(string.Format("id = {0}", combobox1.SelectedValue));
    
    if(rows.Length > 0){
        dt.Rows.Remove(rows[0]);
    }
    
    DataGridView1.DataSource = dt;


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta JCORBETTO lunes, 26 de noviembre de 2012 15:44
    domingo, 25 de noviembre de 2012 16:48
  • Hola Leandro, gracias por responder, este es la funcion  donde lleno el combobox

     public void TARJETAS()
            {
                try
                {
                    INGRESO_DOCENTE Ofrmingreso_docente = (INGRESO_DOCENTE)Application.OpenForms[2];
                    iniciar_conexion();
                    cmSql = new SqlCommand("consultar_tarjetas_disponibles", conexion);
                    cmSql.CommandType = CommandType.StoredProcedure;
                    adapter = new SqlDataAdapter(cmSql);
                    dt = new DataTable();
                    ds = new DataSet();
                    adapter.Fill(ds, "tarjeta");
                    dt = ds.Tables["tarjeta"];
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        DataRow row = dt.NewRow();
                        dt.Rows.InsertAt(row, 0);
                        Ofrmingreso_docente.cbnumeros.DataSource = ds.Tables["tarjeta"];
                        Ofrmingreso_docente.cbnumeros.DisplayMember = "idtarjeta";
                    }
                }
                catch
                {
                    MessageBox.Show("Error al llenar el combo.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    cerrar_conexion();
                }
            }

    El combo lo lleno sin problemas, pero no se en donde colocaria el codigo que me propusistes de ejemplo. Gracias de antemano cualquier ayuda

    lunes, 26 de noviembre de 2012 13:44
  • lo podrias poner en el evento

    SelectionChangeCommited

    entocnes ante la selccion del usuario aplciarias el codigo que propuse


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta JCORBETTO lunes, 26 de noviembre de 2012 15:43
    lunes, 26 de noviembre de 2012 14:36
  • Gracias Leandro, este es el codigo modificado:

      private void cbnumeros_SelectionChangeCommitted(object sender, EventArgs e)
            {
                 DataTable dt = cbnumeros.DataSource as DataTable;
                DataRow[] rows = dt.Select(string.Format("idtarjeta = {0}", cbnumeros.SelectedValue)); //linea donde me marca el error
                if (rows.Length > 0)
                {
                    txtcodtarjeta.Text = cbnumeros.Text;
                    dt.Rows.Remove(rows[0]);
                }
                cbnumeros.DataSource = dt; 
            }

    pero al ejecutar el programa me muestra es siguiente mensaje de error: Error de sintaxis: falta el operando después del operador '='.

    lunes, 26 de noviembre de 2012 15:06
  • listo Leandro, revise bien el codigo y le hice los cambios respectivos y solucione el problema

    aqui los cambios:

     private void cbnumeros_SelectionChangeCommitted(object sender, EventArgs e)
            {
                DataTable dt = cbnumeros.DataSource as DataTable;
                DataRow[] rows = dt.Select(cbnumeros.SelectedText);
                foreach (DataRow row in rows)
               {
                    txtcodtarjeta.Text = cbnumeros.Text;
                    dt.Rows.Remove(row);
                }
                cbnumeros.DataSource = dt; 
            }

    lunes, 26 de noviembre de 2012 15:43