[C#] Cargar ComboBox a partir de una lista genérica

Introducción

En este artículo les voy a explicar como cargar un ComboBox utilizando una lista genérica (List(Of T)).

A modo de ejemplo voy a crear una tabla Usuario con los siguientes campos: CodUsu, Usuario, Contraseña y CorreoElectronico.

Interfaz Gráfica

La interfaz gráfica es la siguiente:


Vamos a poder seleccionar un usuario y a partir de la selección vamos a obtener su código y su correo electrónico.


Lista Genérica

Creamos una nueva clase Usuario en la cual vamos a definir las propiedades que van a representar a los campos de la tabla Usuario que mencione anteriormente.

    class Usuario
    {
        public int CodUsu { get; set; }
        public string UsuarioA { get; set; }
        public string Contraseña { get; set; }
        public string Correo { get; set; }
    }

En el evento load de nuestro formulario, vamos a asignar el origen de datos de nuestro control ComboBox
Para ello:

        private void ComboBoxFrm_Load(object sender, EventArgs e)
        {
            ElementosCMB.DisplayMember = "UsuarioA";
            ElementosCMB.ValueMember = "CodUsu";
            ElementosCMB.DataSource = CargarCombo();
        }

El DisplayMember y ValueMember debe tener el mismo nombre de nuestras propiedades definidas anteriormente ya que el método CargarCombo() devuelve una lista de "Usuario".

        private List<Usuario> CargarCombo()
        {
            List<Usuario> ListaUsuarios = new List<Usuario>();

            using (SqlConnection cnn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BDEjemplo.mdf;Integrated Security=True;User Instance=True"))
            {
                cnn.Open();

                string consultaUsuarios = "SELECT CodUsu,Usuario,CorreoElectronico FROM Usuario";
                SqlCommand cmd = new SqlCommand(consultaUsuarios,cnn);

                SqlDataReader lector = cmd.ExecuteReader();

                while(lector.Read())
                {
                    Usuario UnUsuario = new Usuario();
                    UnUsuario.CodUsu = lector.GetInt32(0);
                    UnUsuario.UsuarioA = lector[1].ToString();
                    UnUsuario.Correo = lector[2].ToString();

                    ListaUsuarios.Add(UnUsuario);
                }
            }

            return ListaUsuarios;
        }

La parte importante del código esta en el ciclo while donde vamos asignando cada lectura del objeto sqldatareader a las propiedades del objeto Usuario. Por cada ciclo, vamos agregando a nuestra lista cada objeto Usuario.

Luego de esto, estamos en condiciones de depurar nuestro proyecto y ver nuestro combo cargado. Llego la hora de completar los campos Código y Correo del usuario seleccionado, para eso en el evento SelectedIndexChanged del combo:

        private void ElementosCMB_SelectedIndexChanged(object sender, EventArgs e)
        {
            CodigoUsuarioTxt.Text = (((Usuario)ElementosCMB.SelectedItem).CodUsu).ToString();
            CorreoUsuariosTxt.Text = ((Usuario)ElementosCMB.SelectedItem).Correo;
        }

De esta manera vamos a poder obtener el valor de la propiedad del objeto seleccionado.

Fin


Código Fuente

Dropbox  

Descargar

[C#] Cargar ComboBox a partir de una lista genérica

Introducción

En este artículo les voy a explicar como cargar un ComboBox utilizando una lista genérica (List(Of T)).

A modo de ejemplo voy a crear una tabla Usuario con los siguientes campos: CodUsu, Usuario, Contraseña y CorreoElectronico.

Interfaz Gráfica

La interfaz gráfica es la siguiente:


Vamos a poder seleccionar un usuario y a partir de la selección vamos a obtener su código y su correo electrónico.


Lista Genérica

Creamos una nueva clase Usuario en la cual vamos a definir las propiedades que van a representar a los campos de la tabla Usuario que mencione anteriormente.

    class Usuario
    {
        public int CodUsu { get; set; }
        public string UsuarioA { get; set; }
        public string Contraseña { get; set; }
        public string Correo { get; set; }
    }

En el evento load de nuestro formulario, vamos a asignar el origen de datos de nuestro control ComboBox
Para ello:

        private void ComboBoxFrm_Load(object sender, EventArgs e)
        {
            ElementosCMB.DisplayMember = "UsuarioA";
            ElementosCMB.ValueMember = "CodUsu";
            ElementosCMB.DataSource = CargarCombo();
        }

El DisplayMember y ValueMember debe tener el mismo nombre de nuestras propiedades definidas anteriormente ya que el método CargarCombo() devuelve una lista de "Usuario".

        private List<Usuario> CargarCombo()
        {
            List<Usuario> ListaUsuarios = new List<Usuario>();

            using (SqlConnection cnn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BDEjemplo.mdf;Integrated Security=True;User Instance=True"))
            {
                cnn.Open();

                string consultaUsuarios = "SELECT CodUsu,Usuario,CorreoElectronico FROM Usuario";
                SqlCommand cmd = new SqlCommand(consultaUsuarios,cnn);

                SqlDataReader lector = cmd.ExecuteReader();

                while(lector.Read())
                {
                    Usuario UnUsuario = new Usuario();
                    UnUsuario.CodUsu = lector.GetInt32(0);
                    UnUsuario.UsuarioA = lector[1].ToString();
                    UnUsuario.Correo = lector[2].ToString();

                    ListaUsuarios.Add(UnUsuario);
                }
            }

            return ListaUsuarios;
        }

La parte importante del código esta en el ciclo while donde vamos asignando cada lectura del objeto sqldatareader a las propiedades del objeto Usuario. Por cada ciclo, vamos agregando a nuestra lista cada objeto Usuario.

Luego de esto, estamos en condiciones de depurar nuestro proyecto y ver nuestro combo cargado. Llego la hora de completar los campos Código y Correo del usuario seleccionado, para eso en el evento SelectedIndexChanged del combo:

        private void ElementosCMB_SelectedIndexChanged(object sender, EventArgs e)
        {
            CodigoUsuarioTxt.Text = (((Usuario)ElementosCMB.SelectedItem).CodUsu).ToString();
            CorreoUsuariosTxt.Text = ((Usuario)ElementosCMB.SelectedItem).Correo;
        }

De esta manera vamos a poder obtener el valor de la propiedad del objeto seleccionado.

Fin


Código Fuente

Dropbox  

Descargar

[C#] Cargar ComboBox a partir de una lista genérica

Introducción

En este artículo les voy a explicar como cargar un ComboBox utilizando una lista genérica (List(Of T)).

A modo de ejemplo voy a crear una tabla Usuario con los siguientes campos: CodUsu, Usuario, Contraseña y CorreoElectronico.

Interfaz Gráfica

La interfaz gráfica es la siguiente:


Vamos a poder seleccionar un usuario y a partir de la selección vamos a obtener su código y su correo electrónico.


Lista Genérica

Creamos una nueva clase Usuario en la cual vamos a definir las propiedades que van a representar a los campos de la tabla Usuario que mencione anteriormente.

    class Usuario
    {
        public int CodUsu { get; set; }
        public string UsuarioA { get; set; }
        public string Contraseña { get; set; }
        public string Correo { get; set; }
    }

En el evento load de nuestro formulario, vamos a asignar el origen de datos de nuestro control ComboBox
Para ello:

        private void ComboBoxFrm_Load(object sender, EventArgs e)
        {
            ElementosCMB.DisplayMember = "UsuarioA";
            ElementosCMB.ValueMember = "CodUsu";
            ElementosCMB.DataSource = CargarCombo();
        }

El DisplayMember y ValueMember debe tener el mismo nombre de nuestras propiedades definidas anteriormente ya que el método CargarCombo() devuelve una lista de "Usuario".

        private List<Usuario> CargarCombo()
        {
            List<Usuario> ListaUsuarios = new List<Usuario>();

            using (SqlConnection cnn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BDEjemplo.mdf;Integrated Security=True;User Instance=True"))
            {
                cnn.Open();

                string consultaUsuarios = "SELECT CodUsu,Usuario,CorreoElectronico FROM Usuario";
                SqlCommand cmd = new SqlCommand(consultaUsuarios,cnn);

                SqlDataReader lector = cmd.ExecuteReader();

                while(lector.Read())
                {
                    Usuario UnUsuario = new Usuario();
                    UnUsuario.CodUsu = lector.GetInt32(0);
                    UnUsuario.UsuarioA = lector[1].ToString();
                    UnUsuario.Correo = lector[2].ToString();

                    ListaUsuarios.Add(UnUsuario);
                }
            }

            return ListaUsuarios;
        }

La parte importante del código esta en el ciclo while donde vamos asignando cada lectura del objeto sqldatareader a las propiedades del objeto Usuario. Por cada ciclo, vamos agregando a nuestra lista cada objeto Usuario.

Luego de esto, estamos en condiciones de depurar nuestro proyecto y ver nuestro combo cargado. Llego la hora de completar los campos Código y Correo del usuario seleccionado, para eso en el evento SelectedIndexChanged del combo:

        private void ElementosCMB_SelectedIndexChanged(object sender, EventArgs e)
        {
            CodigoUsuarioTxt.Text = (((Usuario)ElementosCMB.SelectedItem).CodUsu).ToString();
            CorreoUsuariosTxt.Text = ((Usuario)ElementosCMB.SelectedItem).Correo;
        }

De esta manera vamos a poder obtener el valor de la propiedad del objeto seleccionado.

Fin


Código Fuente

Dropbox  

Descargar

2 comentarios :

  1. Hola muy buen tu articulo, quisiera que me ayudes en como puedo buscar por un id en el combobox, que esta almacenado en el ValueMember.

    Gracias Saludos!!!

    ResponderBorrar