Combobox Manual en C#

imagen principal Fecha de publicación: 24/09/2015

Hay veces que necesitamos añadir elementos manuales al Combobox aparte de los que capturamos de la tabla de una base de datos. En mi caso suelo utilizar un primer elemento que corresponde al valor por defecto y suele tener identificador 0.
Pues bien, con esta función podremos llenar el combobox con valores manuales y de una forma muy sencilla.

1) Creación de clase

Lo primero de todos será crear una nueva Clase en nuestro proyecto.
Ahora añadiremos al apartado de los Usings estas bibliotecas:

using System.Data.SqlClient;
using System.Data;

2) Complementación de Clase

El resto de clase será así:

public class CElementos
    {
        private int id;
        private string valor;
        private string valor2;
        public CElementos(int vid,string vvalor,string vvalor2="")
        {
            id = vid;
            valor = vvalor;
            valor2 = vvalor2;
        }
        public int Id
        {
            set
            {
                id = value;
            }
            get
            {
                return id;
            }
        }
        public string Valor
        {
            set
            {
                valor = value;
            }
            get
            {
                return valor;
            }
        }
        public string Valor2
        {
            set
            {
                valor2 = value;
            }
            get
            {
                return valor2;
            }
        }
    }
    public static class ECombobox
    {
        public static void ComboCargar(SqlConnection bd, ComboBox obj,string criterio,string campoid,string campo,string valordefecto="(Ninguno)",string campo_opcional="")
        {
            DataTable dt = new DataTable();
            SqlCommand comando = new SqlCommand(criterio, bd);
            SqlDataAdapter adap = new SqlDataAdapter(comando);
            adap.Fill(dt);

            obj.DisplayMember = "Valor";
            obj.ValueMember = "Id";
            obj.Items.Clear();
            if (valordefecto != ""){
                CElementos x = new CElementos(0, valordefecto);
                 obj.Items.Add(x);
             }
            foreach (DataRow fila in dt.Rows)
            {
                if (campo_opcional != "")
                {
                    obj.Items.Add(new CElementos((int)fila[campoid], (string)fila[campo], (string)fila[campo_opcional]));
                }
                else
                {
                    obj.Items.Add(new CElementos((int)fila[campoid], (string)fila[campo]));
                }
                
            }
            obj.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            obj.AutoCompleteSource = AutoCompleteSource.ListItems;
            if (obj.Items.Count > 0)
            {
                obj.SelectedIndex = 0;
            }
        }
    }

3) Implementación de la clase y ejecución

Ahora nos vamos a un formulario e introducimos un combobox, y sólo tenemos que poner este código para rellenarlo:

Celementos.ComboCargar(bd, comboBox1, "SELECT ID_Usuario, Usuario FROM Usuarios ORDER BY Usuario", "ID_Usuario", "Usuario", "(Administrador)");

Los parámetros que le pasamos a la función son:

  1. bd: Le pasamos la base de datos en formato |a|SqlConnection|#|
  2. combobox1: Le pasamos nuestro objeto Combobox
  3. SELECT ID_Usuario, Usuario FROM Usuarios ORDER BY Usuario: Es la consulta SQL con la que rellenaremos el Combobox
  4. ID_Usuario: El campo índice de la consulta que realizamos
  5. Usuario: El nombre del campo que aparecerá en el Combobox

4) Recuperación del valor

Por último, para recuperar los valores del elementos seleccionado del Combobox sólo tendremos que hacer esto:

CElementos x = (CElementos)comboBox1.SelectedItem;

Si te gusta este artículo compártelo en las redes sociales

Comentarios

No se han publicado comentarios

Publicar un comentario

Introduzca un comentario

Nombre:
Comentario:
Introduce los números
de la imagen de arriba
Introducir

Si te gusta o te es útil esta página puedes hacer una donación para permitir su mantenimiento