LinQ to Sql (Arquitectura de capas):
Con los siguientes nombres:
- dgvUsuario DataGridView
- lblUsuario Label
- lblClave Label
- lblEstado Label
- lblCodigo Label
- txtCodigo TextBox
- txtUsuario TextBox
- txtClave TextBox
- txtEstado TextBox
- btnModificar Button
- btnEliminar Button
- btnInsertar Button
Ahora a picar código amigos!!!
Antes que todo, en el espacio de nombre de la clase de formulario, agregaremos la siguiente definición de variable de clase de la capa de negocio
CapaNegocio.brlUsuario brlUsuario = new CapaNegocio.brlUsuario();
1 - En el método que atiende el evento load de la página agregaremos las siguientes líneas de código:
private void frmUsuario_Load(object sender, EventArgs e){
try {
this.dgvUsuario.DataSource = this.brlUsuario.funUsuarioObtener();
}
catch (Exception ex){
MessageBox.Show(ex.Message);
}
}
Lo que hacemos es desplegar la información de los usuarios en el datagridview, en este caso retornamos la lista de estructura de clases y esta automáticamente se despliega.
2 - Ahora definiremos la acción de selecciona de un registro del data grid view para ello, en el método que atiende el evento CellContentClick agregaremos las siguientes líneas de código, en el cual, el método selecciona y desplega la información de un usuario en la sección de modificación eliminación de datos.
private void dgvUsuario_CellContentClick(object sender, DataGridViewCellEventArgs e){
try{
int idx = this.dgvUsuario.CurrentRow.Index;
string usuario = this.dgvUsuario[1,idx].Value.ToString();
string clave = this.dgvUsuario[2,idx].Value.ToString();
CapaDato.lnqUsuario usu = this.brlUsuario.funUsuarioObtener(usuario, clave);
this.txtCodigo.Text = usu.usuCodigo.ToString().Trim();
this.txtUsuario.Text = usu.usuLogin.ToString().Trim();
this.txtClave.Text = usu.usuClave.ToString().Trim();
this.txtEstado.Text = usu.usuEstado.ToString().Trim();
MessageBox.Show(usu.lnqEmpleado.empNombre.ToString() + " " +
usu.lnqEmpleado.empApellidoPrimero.ToString());
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
En este caso se observa que utilizamos una definición de estructura para capturar la información que se retorna desde la Capa de negocios, como dijimos esta estructura está definida en la capa de datos, pero el acceso a los datos (Transacciones), se realiza desde la capa de negocio.
3 - En el método que atiende el evento click del botón btnInsertar agregaremos las siguientes líneas de código:
private void btnInsertar_Click(object sender, EventArgs e)
{
try
{
string usuario = this.txtUsuario.Text;
string clave = this.txtClave.Text;
int empleado = 1;
this.brlUsuario.prcUsuarioInsertar(empleado, usuario, clave);
this.dgvUsuario.DataSource = this.brlUsuario.funUsuarioObtener();
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
4 - En el método que atiende el evento click del boton btnModificar agregaremos las siguientes líneas de código:
private void btnModificar_Click(object sender, EventArgs e){
try {
if (this.dgvUsuario.SelectedCells.Count == 0){
throw new Exception("Debe seleccionar una fila");
}
int idx = this.dgvUsuario.CurrentRow.Index;
string usuario = this.dgvUsuario[1, idx].Value.ToString();
string clave = this.dgvUsuario[2, idx].Value.ToString();
string newusuario = this.txtUsuario.Text;
string newclave = this.txtClave.Text;
this.brlUsuario.prcUsuarioModificar(usuario, clave, newusuario, newclave);
this.dgvUsuario.DataSource = this.brlUsuario.funUsuarioObtener();
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
5 - En el método que atiende el evento click del botón btnEliminar agregaremos las siguientes líneas de código:
private void btnEliminar_Click(object sender, EventArgs e){
try {
if (this.dgvUsuario.SelectedCells.Count == 0) {
throw new Exception("Debe seleccionar una fila");
}
int idx = this.dgvUsuario.CurrentRow.Index;
string usuario = this.dgvUsuario[1, idx].Value.ToString();
string clave = this.dgvUsuario[2, idx].Value.ToString();
this.brlUsuario.prcUsuarioEliminar(usuario, clave);
this.dgvUsuario.DataSource = this.brlUsuario.funUsuarioObtener();
}
catch (Exception ex){
MessageBox.Show(ex.Message);
}
}
Bueno señores. Como resumen, podemos ver que LinQ to SQL cumple con todas las especificaciones para trabajar orientado a objetos. ABAJO CON LAS CREENCIAS DE QUE NO SE PODIA PROGRAMAR A OBJETOS CON LINQ.
Claro esta que si se ven los ejemplos introductorios nunca podremos programar OO, pero con este ejemplo, que es totalmente mejorable, se puede observar que cumple con las Bases de la Programación OO sin problemas.
Bueno señores los dejo y espero que antes de fin de mes pueda agregar la capa de datos ejecutada con procedimientos almacenados "LA LLEVA(expreción de muy bueno en Chile) - MOLA (expreción de muy bueno en España)".
No hay comentarios:
Publicar un comentario