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
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
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.
ResponderBorrarGracias Saludos!!!
Te Amo <3
ResponderBorrar