martes, 6 de diciembre de 2011

Como llenar un Combo Box en C#

Es bastante sencillo, lo que vamos a realizar es llenar un combobox de windows form extrayendo los datos desde una BD.

Siempre me a gustado trabajar en capas por eso les mostrare desde como hacer el SP (Store Procedure) el llamado de una clase, y la aplicación en el Form

Bueno el SP es un código que me va a traer en este caso los roles de un sistema y los campos que retorna son el Id y el Nombre

SP:
       CREATE procedure[dbo].[trae_datos_roles]
        as
        begin
        select Id_rol, Nombre_rol from Tbl_rol
        end

Luego que tenemos el SP funcionado pasamos al llamado a alguna clase en este caso le llame Roles

 public DataSet retorna_roles()
        {
            Nombre_Sp = "trae_datos_roles";
            ds = cargar_dataset(Nombre_Sp, ref mensaje_error, ref numero_error);
            if (numero_error == 0)
                return ds;
            else
                return null;

En este código se esta usando otra clase llamada UtilidadesBD(Valida las conexiones) que se conecta con la Clase DAL(Lenguaje de acceso a datos) en este caso lo que se manda por parámetros es el nombre del SP y este devuelve un Data Set con la información requerida (Si necesitan las otras clases escríbanme y se las puedo pasar)

Con eso ahora podemos cargar nuestro combo box en el form

Yo cree un procedimiento para llamar a la carga de este combo box de esta manera:

Nomenclatura= cb = combo box , ds = DataSet


  void carga_roles()
        {
            objroles = new Roles();
            ds = new DataSet();
           ds = objroles.retorna_roles();
           cb_roles.DataSource = ds.Tables[0];
           cb_roles.DisplayMember = ds.Tables[0].Columns["Nombre_rol"].ColumnName;
           cb_roles.ValueMember = ds.Tables[0].Columns["Id_rol"].ColumnName;
           objroles = null;
            
        }

Bueno para explicar un poco al inicio llamo a la Clase Roles que vimos ahora la inicializo, luego creo un data set y lo inicializo también, luego cargo se data set con el data set que me retorna el procedimiento de la Clase roles.

Cargo se data set al combo box con la propiedad DataSource.
Luego evaluó para saber que es lo que necesito mostrar al usuario final y cual es el valor que voy a utilizar en mi código para esto están las propiedades DisplayMember y ValueMember como se utiliza en el código anterior

Con esto vamos a tener un combo box cargado con items de la base de datos