C sharp - Cargar Combobox en c# programación en 3 Capas Datos,Negocio,Presentación

   
Vista:

Cargar Combobox en c# programación en 3 Capas Datos,Negocio,Presentación

Publicado por Joe (7 intervenciones) el 18/01/2016 10:11:53
Lo que pasa en que tengo un procedimiento almacenado en SQL Server llamado spllenar_puesto el cual se forma de la siguiente manera:
create proc spllenar_puesto
as
select idpuesto, puesto from puestos
go

Mi pregunta es como llenar el combobox usando las 3 capas (Datos, Negocio y Presentación)

espero me puedan ayudar con mi duda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Cargar Combobox en c# programación en 3 Capas Datos,Negocio,Presentación

Publicado por Marcelo (18 intervenciones) el 18/01/2016 16:02:52
Tu problema es muy sencillo, por lo que no requieres de mucha codificación.

Simplemente tienes que ser consciente de que necesitas obtener los datos de tu Store(capa de datos).

Darla a una capa intermedia que sirva como nexo entre la capa de datos y la presentación (Capa de Servicio o Negocio)

Y por ultimo recorrer la información obtenida e insertarla en el combo deseado

El código de la presentación seria algo así

1
2
3
4
List<string> puestos = servicios.Get_Puestos_All();
for(int i = 0; i < puestos.Count; i++){
     miCombo.Items.Add(puestos[i]);
}

Tu Capa de negocio deberia ser simplemente un pasamanos para este caso, supongamos algo del estilo

1
2
3
public List<string> Get_Puestps_All(){
           return baseDeDatps.Get_Puestos_All();
}

Por Ultimo en tu capa de datos(la que accedes a la base de datos), debes obtener la informacion Necesaria.

1
2
3
4
5
public List<string> Get_Puestps_All(){
         //Aqui llamas a la base de datos con la forma que mas te guste
        List<string> retorno = ...//Cargas la lista a devolver con los valores obtenido de la consulta anterior a la base
        return retorno; // devuelve los valores
}

Espero te ayude como guia y pudes resolver el problema.

A las ordene por cualquier duda o consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Cargar Combobox en c# programación en 3 Capas Datos,Negocio,Presentación

Eso es muy sencillo, es como te ha docho Marcelo, solo que podrías ser mas específico el asunto como te paso a explicar:

Capa de acceso a datos, si trabajas con C#, podrías hacerlo así: dependiendo como recuperes los datos si es con ADO.NET Puro o Entity Framework, entonces tendrías una función que te devuelva una lista de puestos (List<Puesto>())

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public List<Puesto>GetPuestos()
{
   aqui dentro recuperas con un datareader por ejemplo y llenas una lista
List<Puesto>mylista=new List<Puesto>();
recorres el datareader extrayendo cada uno de los puestos que vienen desde la base de datos y lo vas agregando a la lista en cada vuelta
Puesto puesto=null;
while(reade.read())
{
   puesto=new Puesto();
   puesto.IdPuesto=reader.Getint32(0);
   puesto.NombrePuesto=reader.GetString(1);
   mylista.Add(puesto)
}
 
Retun mylista;
 
}

Eso básicamente sería tu capa de acceso a datos.

En tu capa de negocio podría ser similar:

BLL

1
2
3
4
5
Public List<Puesto>GetPuestos()
{
     DAOPuesto puesto=new DAOPuesto();
     return puesto.GetPuestos();
}


Y eso seria todo prácticamente en tu capa de negocios:

En el cliente bastaría con esto:

En la seccion declaraciones podrias declarar algo mas o menos así:

BOPuestos puestos=new BOPuestos();

Y en el load de tu formulario podrías tener algo así:

1
2
3
4
5
6
7
8
form1_load()
{
this.cboPuestos.Datasource=puestos.GetPuestos();
this.cboPuestos.DisplayMember="NombrePuesto";
this.cboPuestos.ValueMember="IdPuesto";
 
 
}

Con eso ya estaría listo todo el asunto y los puestos ya deberian aparecer en tu combobox.

Saludos cordiales,

PD:De prererencia podrias tener una capa de entidades y las definiciones que puse no están completas, ya que lo hice de volada aqui, pero esa es la idea de como se debe trabajar, y la cual debes conocer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Cargar Combobox en c# programación en 3 Capas Datos,Negocio,Presentación

Publicado por Joe (7 intervenciones) el 21/01/2016 00:25:55
buenas tardes amigo, muchas gracias por su respuesta.
realice los pasos como me los explico y me arroja el siguiente error:

error CS0012: El tipo 'CapaDatos.DEmpleado' está definido en un ensamblado al que no se hace referencia. Debe agregar una referencia al ensamblado 'CapaDatos, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

ya investigue para tratar de arreglarlo pero no lo e logrado, a continuacion te muestro mi código esperando me pueda ayudar.

--- CAPA DATOS---

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public List<DPuesto>OptenerPuestos()
        {
            List<DPuesto> npuesto = new List<DPuesto>();
            SqlConnection con = new SqlConnection();
            con.ConnectionString = conexion.con;
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "spllenar_puesto";
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader dr = cmd.ExecuteReader();
           while(dr.Read())
           {
               DPuesto puesto = new DEmpleado();
               puesto.IDpuesto = dr.GetInt32(0);
               puesto.Puesto = dr.GetString(1);
               npuesto.Add(puesto);
           }
           return npuesto;
        }


---CAPA NEGOCIO---

1
2
3
4
5
public  List<DPuesto> llenarcombo()
        {
            DPuesto puesto = new DPuesto();
            return puesto.OptenerPuestos();
        }


---CAPA PRESENTACIÓN--- (es aquí donde me arroja el error)

(em) la declaro en la sección de declaraciones

1
2
3
4
5
6
7
private void frmagregaremp_Load(object sender, EventArgs e)
        {
            cbopuestos.DataSource = em.llenarcombo();
            cbopuestos.DisplayMember = "puesto";
            cbopuestos.ValueMember = "idpuesto";
 
        }


Agradecería me pudiera ayudar. Cualquier cosa que me aya faltado explicar por favor agamelo saber.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Cargar Combobox en c# programación en 3 Capas Datos,Negocio,Presentación

Haber mi estimado Joe

Creo que básicamente, el error que te está arrojando es que no tienes referencia al tipo de datos DEmpleado, y esa debe ser una clase que esté en la capa de entidades.
Ya que lo que te expliqué debería tener 4 proyectos:
Capa de Acceso a Datos
Capa de Negocio
Capa de Entidades
Capa Cliente

Y debes agregar referencias de esta manera:
1.- En la capa de acceso a datos, debes agregar referencia a la capa Entidades--Aqui es donde debe estar definido Empleado o DEmpleado.

2.- En la capa de Negocio debe agregar referencia a la capa de acceso a datos y a la capa entidades.

3.- En la capa Cliente, debe agregar referencia a la capa negocio y las entidades.

Eso sería todo, en la capa de Entidades, no se agregan referencias.

Ahora tu problema también podría estar en que la clase DEmpleado, no tenga esté declarada como Public, con lo cual no estaría visible, dependiendo de dónde lo hayas definido.

Espero haberte dado una luz, ya que según lo que muestras, parece que todo anda bien, salvo ese detalle que te comento.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar