20 mayo 2006

Parte II: Usando Treeview y DataGridView con Acceso a Datos

Hola amigos!!!
Continuando con los ejemplos en C#, vamos hacer un ejemplo de donde mostraremos un Listado de Productos por Categorias. Y para este ejemplos usaremos los controles TreeView (treeView1), Button (btnCargar), DataGridView (dataGridView1) y Form. A continuación el diseño del winForms:

Nota: No olvidar que estamos el proyecto ClassLibrary (Conexion).

A continuacion el suiguiente script:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Conexion;
using System.Data.SqlClient;
namespace Ejemplos
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
//usando regiones
#region "Conexion"
//usando la clase ParamConecc del proyecto ClassLibrary (Conexion)
ParamConecc con = new ParamConecc();
#endregion
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
DataSet dsGrupo = new DataSet();
DataTable dtGrupo = new DataTable();
string nodoPadre;
try
{
nodoPadre = Convert.ToString(treeView1.SelectedNode.Text);
string sSQL = "SELECT P.ProductID, P.ProductName, ";
sSQL += " P.QuantityPerUnit, P.UnitPrice ";
sSQL += " FROM Categories C INNER JOIN Products P ";
sSQL += " ON C.CategoryID = P.CategoryID ";
sSQL += " WHERE C.CategoryName = ' " + nodoPadre + " ' ";
sSQL += " GROUP BY C.CategoryName, P.ProductID, ";
sSQL += " P.ProductName, P.QuantityPerUnit, ";
sSQL += " P.UnitPrice ";
SqlDataAdapter daGProducto = new SqlDataAdapter(sSQL, con.cSQL);
daGProducto.Fill(dsGrupo, "gProducto");
dtGrupo = dsGrupo.Tables["gProducto"];
dataGridView1.DataSource = dtGrupo;
// Cambiando nombres a las cabeceras del DataGridView
dataGridView1.Columns["ProductID"].HeaderText = "Codigo";
// Centrando el ID del Producto del DatagridView
dataGridView1.Columns["ProductID"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Columns["ProductName"].HeaderText = "Producto";
dataGridView1.Columns["QuantityPerUnit"].HeaderText = "Cantidad";
dataGridView1.Columns["UnitPrice"].HeaderText = "Precio Unitario";
// Centrado de cabeceras del DataGridView
dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
}
private void btnCargar_Click(object sender, EventArgs e)
{
DataSet dsGrupo = new DataSet();
DataTable dtGrupo = new DataTable();
string sSQL = "Select CategoryName From Categories Group By CategoryName";
SqlDataAdapter daTablaCategoria = new SqlDataAdapter(sSQL, con.cSQL);
treeView1.Nodes.Clear();
try
{
daTablaCategoria.Fill(dsGrupo, "dtCategoria");
dtGrupo = dsGrupo.Tables["dtCategoria"];
foreach (DataRow drFila in dtGrupo.Rows)
{
TreeNode nodo = new TreeNode();
nodo = nodo.Nodes.Add(drFila["CategoryName"] + "");
treeView1.Nodes.Add(nodo);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
this.dataGridView1.DataSource = null;
}
}
}


Luego presionar la tecla F5:


Ahora amigos si ustedes visualizan el DataGirdView, observaran que la celda del Precio Unitario las cantidades se muestran con dos(2) decimales, a continuación agregue la siguiente linea de script para darle formato a la celda del Precio Unitario:

Una vez agregado el script, presione la tecla F5.

Espero que sea de gran utilidad este demo,

Saludos.