XAML en WPF C# (segunda parte)

Con el pasar de los días y arrastrando un poco la cobija, continuamos con este ejercicio buscando ahora guardar datos en una base de datos, y simulando en lo posible el patrón MVC.

Para agilizar las cosas en lugar de hacer recorridos mediante botones de avance, retroceso, inicio y fin, vamos a agregar un grid, quedando así el prototipo:

Tengo un servidor de base de datos SQL Server en una máquina virtual, ahí vamos  a crear base de datos DBClients y una tabla llamada T_client.

Tuve muchos quebraderos de cabeza, me gusta usar Oracle Virtual Box para evitar buscar cracks de otros productos, pues bien escribiré otro artículo sobre como configurar este paquete, ya que entre que dejo de dar sistemas operativos hay detalles que se olvidan y nos causan retrasos en las clases (adaptador puente y una opción de conectar cable por ejemplo en este cuatrimestre).

Una buena práctica hacer una conexión en VS usando el Explorador de Servidores antes de cualquier cosa, como es SQL Server, la opción para este motor viene entre las predeterminadas. Vamos al menú Ver-Explorador de Soluciones (Ctrl-Alt-S)

Damos click derecho en la opción “Conexión de datos” y elegimos “Agregar Conexión”.

Ahora seleccionamos el origen de datos que por comodidad usaremos SQL Server y damos click en el botón “Aceptar”.

Ahora damos los datos para hacer la conexión, para hacerlo un poco más cercano a la realidad tenemos que usar la autenticación por medio de SQL Server, dando click en el botón “Probar conexión” verificamos que tenemos conexión con la base de datos, es importante que se elija la base de datos con la que se va a trabajar, seleccionándola del combo correspondiente.

Ahora vamos a las propiedades de esta conexión para obtener la cadena de conexión.

Ahora vamos a programar, el controlador de encarga de la relación vista-modelo, al dar clic en el botón “View” se activa la acción que mostrará los datos en el DataGridView.

En la clase controlador, vamos a agregar este nuevo método:

public DataTable ReturnDataTable()

{

Customer cust = new Customer();

cust.CadenaConn = “Data Source=x.x.x.x;Initial Catalog=BDClients;User ID=sa;Password=******”;

return cust.ReturnDtCust();

}

Para que el DataGrid nos muestre información de la tabla le tenemos que mandar un objeto de tipo DataTable, es por eso que el método del controlador, regresa un DataTable, sin embargo de acuerdo al esquema MVC, la responsabilidad de negociar con la base de datos es del modelo, para ello hacemos una clase en el modelo.

public DataTable ReturnDtCust()

{

DataTable dtCust = new DataTable();

SqlConnection conn = new SqlConnection(CadenaConn);

try

{

conn.Open();

SqlCommand comm = new SqlCommand(“select * from t_client”, conn);

SqlDataAdapter da = new SqlDataAdapter();

da.SelectCommand = comm;

da.Fill(dtCust);

}

catch (Exception)

{

throw;

}

return dtCust;

}

Aquí se negocia con el motor que en este caso en SQL Server, y se usa un Adaptador para que “poble” (método fill) de datos al objeto DataTable que sería un objeto genérico para .NET.

Nos vamos a la vista para ahora asignar el DataTable, nuevamente las cosas cambian para wpf, lo que costó una visita a Google para solucionarlo.

private void bt_view_Click(object sender, RoutedEventArgs e)

{

dgv_customers.ItemsSource = ccust.ReturnDataTable().DefaultView;

dgv_customers.AutoGenerateColumns = true;

dgv_customers.CanUserAddRows = false;

}

Con esto podemos visualizar los datos que tiene la tabla de clientes.

Y ya solo queda terminar la aplicación…

Saludos.

Profesor Miguel Araujo.

Deja un comentario