Introducción- Data Label- Capa de Datos- Capa de Negocios- UI Interfaz
Creando la interfaz que consumirá las Capas creadas
Como ultimo paso, vamos a consumir la información y realizar las transacciones correspondientes a consultas de datos. Las transacciones de actualización de información se las dejo a ustedes.
Como requisito previo para este ejemplo necesitamos tener creado por lo menos un registro de empleado y un registro de usuario para realizar las consultas de despliegue de este.
Podríamos definir la interfaz en una aplicación web o en wpf, pero requeriría mucho trabajo y como estamos entregando lineamientos metodológicos de arquitectura de programación, me centraré en esta idea y agregaremos a la solución una aplicación de tipo windows en C#
Para esto, nos posicionaremos en el explorador de lasolución, sobre el nombre de esta y con el botón derecho del mouse seleccionaremos la opcion Nuevo/Agregar nuevo proyecto y seleccionaremos una aplicación de windows form, la cual llamaremos WinApp, como se muestra en la siguiente figura:
En el formulario por defecto agregaremos los siguientes controles:
ListBox lbxUsuario;
TextBox txtNombre;
TextBox txtAppPrimero;
TextBox txtAppSegundo;
TextBox txtFechaActivacion;
Label lblNombre;
Label lblAppPrimero;
Label lblAppSegundo;
Label lblFechaActivacion;
Quedando el formulario de la siguiente forma:
El siguiente paso es picar código, ahunque podríamos realizar las referencias desde los objetos, pero esto presenta algunos problemitas, si existe problemas en la ejecución la aplicación fallará y deberemos crear manejadores de errores el un archivo general, lo cual lo veremos más adelante y, adicionalmente, prefiero picar el código para hacer estas cosas, por que es más controlado y podemos tener un código más transaprente.
Para esto habilitaremos dos métodos que adienten eventos:
- Un método que atienda el evento de carga del formulario (Load)
- Un método que atienda el evento select del listbox (SelectedIndexChanged)
private void Form1_Load(object sender, EventArgs e)
{
}
private void lblUsuario_SelectedIndexChanged(object sender, EventArgs e)
{
}
Hasta aquí todo bien, lo siguiente es tener accesibilidad a las capas que hemos creado, para ello agregaremos dos referencias en el proyecto, una ac CapaDato y otra a CapaNegocio.
Si revisamos en el explorador de soluciones, en el proyecto en cuestión al que se le están agregando las referencias, veremos que se han agregado estas, como se muestra a continuación:
Nos queda poco, solo nos falta picar el código y probar, el código lo pongo a continuación:
En el método que atiende el evento load de la pagina, agregaremos las siguientes líneas de código:private void Form1_Load(object sender, EventArgs e)
{
try
{
CapaDato.dsEmpleado.lnqUsuarioDataTable dt = new
CapaDato.dsEmpleado.lnqUsuarioDataTable();
CapaNegocio.clsEmpleado cls = new CapaNegocio.clsEmpleado();
dt = cls.fnUsuarioLista();
if (dt.Rows.Count>0){
this.lbxUsuario.DataSource = dt;
this.lbxUsuario.DisplayMember = dt.usuLoginColumn.ToString();
this.lbxUsuario.ValueMember = dt.empCodigoColumn.ToString();
}
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
ANALISEMOS EL CODIGO
- Primero definimos una variable del tipo de datatable lnqUsuario, esto es para cargar la información que se retorna desde la Capa de Negocio.
- En segundo lugar creamos una instancias a la clase de la Capa de Negocio que contiene el método que debemos llamar para realizar la carga de datos.
- Luego se realiza la llamada al método específico y el resultado se carga en la variable que tiene la misma estructura de lo retornado.
Bueno el resto del código se explica por si solo.
Si ejecutamos la aplicación y tenemos registro asociados, la información se verá de la siguiente forma:
private void lblUsuario_SelectedIndexChanged(object sender, EventArgs e) {
int idx = -1;
try { idx = (int)this.lbxUsuario.SelectedValue; }
catch{ idx = -1; }
try {
if (idx>-1){
CapaDato.dsEmpleado.lnqEmpleadoDataTable dt = new
CapaDato.dsEmpleado.lnqEmpleadoDataTable();
CapaNegocio.clsEmpleado cls = new CapaNegocio.clsEmpleado();
dt = cls.fnUsuarioConsultar(idx);
if (dt.Rows.Count > 0){
this.txtNombre.Text = dt[0].empNombre.ToString();
this.txtAppPrimero.Text = dt[0].empApellidoPrimero.ToString();
this.txtAppSegundo.Text = dt[0].empApellidoSegundo.ToString();
this.txtFechaActivacion.Text = dt[0].empFechaActivacion.ToString("dd/MM/yyyy");
}
}
}catch (Exception ex){
MessageBox.Show(ex.Message);
}
}
ANALISEMOS EL CODIGO
Bueno amigos, aquí he tenido que hacer un arreglin, que por falta de tiempo no lo he solucionado así que esta tarea se las dejo a ustedes.
El try catch que se ha agregado al inicio se define para controlar la primera entrada de carga, ya que al asignar el origen de datos, se instancia el método que atiende el evento selectedindexshange y como en este momento no tiene la información cargada, al rescatar el selectedvalue entrega System.Data.DataRowView, lo cual no nos sirve, así que he creado un condicionador con el control de errores (ocurrente no???).
- Bueno lo demás va por la misma línea, creamos una variable con la estructura de la información que deseamos rescatar.
- En segundo lugar creamos una instancias a la clase de la Capa de Negocio que contiene el método que debemos llamar para realizar la carga de datos.
- Luego se realiza la llamada al método específico y el resultado se carga en la variable que tiene la misma estructura de lo retornado.
Bueno amigos a ejecutar y suerte, a mi me funciona.







