Que tal! Una vez mas aquí ando con algo que muchas veces se requiere para algunos proyectos hechos con C# y ADO.NET.
Para este ejemplo lo haré de dos maneras – esto no quiere decir que sean las únicas de hacerlo – pero yo así lo voy a hacer c:
Lo primero será crear un proyecto en VS2010 yo lo he llamado MulColsDg (Multiplica Columnas de DatagridView)
Después de esto lo siguiente será agregar la referencia a nuestro proyecto del motor de base de datos que utilizaré para este ejemplo y que será ni mas ni menos que SqlServerCe (Cabe mencionar que si ya tienes tu proyecto con algún dataset, dataadapter conectado a una base de datos como ésta, éste paso no será necesario). Para hacer esto hacemos click derecho sobre la carpeta: References de nuestro proyecto y seleccionamos Add Reference:
Buscamos uno que se llama: System.Data.SqlServerCe. Podemos ordenar la lista pulsando sobre el encabezado de lista para ordenarlo alfabéticamente. Una vez hecho esto paso procedemos a agregar el using a nuestro proyecto:
using System.Data.SqlServerCe;
Ahora agregaré una base de datos al proyecto con el poderoso y sabio nombre: Database1.sdf:
Una vez hecho esto le agrego una tabla que tendrá la siguiente estructura o como dijera el sabio @EPN eschuchrr:
A esta tablita le he agregado algunos valores para que a la hora de consultar contenga algo:
Ahora agregaremos un archivo de configuración (en caso de no tener en nuestro proyecto ya un archivo) para saber si ya tienes uno habrá que buscar uno que tengo la extensión *.config.
Sino lo tenemos entones habrá que agregarlo y para hacerlo hacemos click derecho sobre nuestro proyecto(sobre nuestro proyecto, no sobre la solución) Add/New Item:
Yo le he dejado el nombre por default app.config y le agrego entre los tags<configuration></configuration> mi cadena de conexión que será a mi base de datos:
<add name="Productos" connectionString="Data Source =|DataDirectory|\Database1.sdf; Persist Security Info = true;" providerName="Microsoft.SqlServerCe.Client.3.5" />
quedando todo el contenido así:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="Productos" connectionString="Data Source =|DataDirectory|\Database1.sdf; Persist Security Info = true;" providerName="Microsoft.SqlServerCe.Client.3.5" /> </connectionStrings> </configuration>
Donde lo único que he agregado es el tag <connectionsStrings> que es de aquí de donde obtendremos la información para conectarnos a esta base de datos y que es la manera usual de hacerl en la aplicaciones N-Tier ó N-Capas. No hay límite podríamos tener 2, 3 ó n conexiones y todas estarían dentro de este tag.
Bien una vez agregado el archivo de configuración agregaré otro espacion de nombres a mi proyecto para poder hacer eso de esta conexión en mi proyecto lo que haré ahora será buscar el espacion de nombres:
System.Configuration este espacion de nombres contiene los tipos que proveen el modelo de programación para el manejo de datos. Mas info
quedando en nuestro proyecto así:
using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq;using System.Text; using System.Windows.Forms; //Los dos nuevos espacios de nombres using System.Configuration; using System.Data.SqlServerCe;
Ahora agrego un datagridview a mi formulario vacío y lo ubico donde mejor me plazca 😀 para el ejemplo igual lo puedes hacer tu
Lo que sigue ahora es crear un método en donde lo que haré básicamente será hacer una consulta a la tabla Products, traerme los datos que allí tengo suponiendo que sea una tabla de detalles donde he ido ingresando lo que el usuario en un super, restaurant, comedor, etc lleva en su cuenta:
/// <summary>
/// Accediendo a la propiedad ConnectionStrings y al nombre de la conexión que me interesa
/// </summary>
string conn = ConfigurationManager.ConnectionStrings["Productos"].ConnectionString;
/// <summary>
/// Método que me servirá para mostrar los datos consultados en mi bdd a la tabla
/// </summary>
/// <returns>Un DataTable</returns>
private DataTable GetData()
{
//Instanció un DataTable
DataTable dt = new DataTable();
//Hago uso de ADO.NET usando la clase SqlCeConnection definida para el motor de ejemplo Ce = Compact Edition
using (SqlCeConnection cnn = new SqlCeConnection(conn))
{
//Mi consulta
string sql = @"select IdProduct, Description, Precio, Cantidad from Products order by IdProduct";
//Abro la conexión
cnn.Open();
//Creo un Adaptador de datos y le asigno el valor de la consulta y el valor de mi cadena de conexión
SqlCeDataAdapter oleDb = new SqlCeDataAdapter(sql, cnn);
//Lleno el DataTable con lo que contiene el Adaptador de datos
oleDb.Fill(dt);
//Creo una columna adicional -No contenida en mi consulta, ni en la tabla para contener el resultado de la
//multiplicación de la columna Precio * Cantidad y lo hago a través de la propieda Expression de la clase DataColumn
DataColumn dc = dt.Columns.Add("Importe", typeof (decimal));
dc.Expression = "[Precio]*[Cantidad]";
}
return dt;
}
Ahora en el contructor de mi formulario o en el evento Load de mi formulario agregaré la siguiente línea:
dataGridView1.DataSource = GetData();
Quedando todo así:
public Form1()
{
InitializeComponent();
dataGridView1.DataSource = GetData();
}
Listo! Pulso F5 ó Menú Debug/Start Debugging
y pimba!!

Ahora si quisiera mostrar la suma del total del importe??
bueno en ese caso agrego una variable del tipo decimal:
decimal total = 0;
y recorro el datagridview:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
total += Convert.ToDecimal(row.Cells["Importe"].Value);
}
Agrego 2 labels a mi form en una(label1) sólo cambio su propieda text a “Total:” y la otra(label2) queda por default:
y agrego despues de recorrer el grid:
label2.Text = string.Format("{0:C}", total);
//aunque si lo dejo así mostrará el mismo resultado:
label2.Text = total.ToString("C");
//El formato lo tomará la configuración de moneda actual del sistema teniendo en cuanta que si el usuario tiene configurada como euro entones mostrará algo así:
donde lo que hago es formatear el resultado a currency (ToString(“C”))
Y eso es todo. Ejecuto con F5 y Menu /Debug/Start Debugging:




















































































Step 2


