Totalizar una Columna en un DataGridView

Siguiendo la consulta de Jesús Pérez, preguntando como totalizar la suma de una columna de un DataGridView, poniendo como ejemplo recorrer las filas de una columna y efectuar las operaciones que consideremos oportunas. Tambien como entrada del post os dejo un aporte gracias a Enrique Martinez, que introduce la funcion explicita y correcta para efectuar sumas en encolumnados de DataGridView's...

Saludos,
Pep Lluis,

Aqui teneis el enlace : http://msdn.microsoft.com/es-es/library/system.data.datatable.compute.aspx

        ' Computar la suma de la columna 'Capital' 
       
Dim total As Object = dt.Compute("SUM(Capital)", Nothing)
       
' visualizar el resultado en la barra
        Me.Text = total.ToString

A continuacion... recorriendo las filas de la Columna...
SumaColumna


.. Handles Me.Load
'Disparar el calculo cada vez que editamos

AddHandler Me.dataGridView1.CellEndEdit, AddressOf Sumar
'Calcular el contenido inicial de la columna
Me.dataGridView1.Columns(3).HeaderText = "Salario"
Me.dataGridView1.AllowUserToAddRows = False
Me.dataGridView1.CurrentCell = dataGridView1.Rows(0).Cells(3)
Sumar()
..
End Sub
'
' Sumar las cantidades de una columna
'
Private Columna As Integer = 3

Sub
Sumar()
  Dim Total As Integer = 0      'Acumular el total
  Dim UltimaFila As Integer = Me.dataGridView1.Rows.Count
  'Solo calculamos si modificamos la columna definida
  If Me.dataGridView1.CurrentCell.ColumnIndex = Columna Then
   For Each row As DataGridViewRow In Me.dataGridView1.Rows
    If row.Index < UltimaFila - 1 Then Total += row.Cells(Columna).Value
   Next
   Me.dataGridView1.Rows(UltimaFila - 1).Cells(3).Value = Total.ToString
  End If
End Sub

Pd. No dudeis en pedirme el proyecto completo si estais interesados, o si quereis comentar alguna parte del codigo.  

Comments

# re: Totalizar una Columna en un DataGridView

Thursday, July 03, 2008 3:55 PM by Fernando

Amigo primero dejame felicitarte por tu blog es muy bueno no se si me puedes ayudar con el codigo de este ejemplo me interesa verlo mas a detalle, saludos

# re: Totalizar una Columna en un DataGridView

Tuesday, July 15, 2008 4:26 PM by Raul Valle

Me da error en la parte de "AddressOf Sumar" me dice que el metodo no tiene la misma firma que el delegado, me podrian ayudar, gracias.

# re: Totalizar una Columna en un DataGridView

Friday, July 18, 2008 1:55 AM by peplluis

Hola Raul,

Supongo que no estas utilizando VB9, pues este dispone de lo que llamamos "delegados relajados", esto permite llamar a las funciones sin las acostumbradas 'firmas'...

Sub Loquesea(e as object, sender as system...)

Lo que te esta indicando el error, es que necesitas proveer los parametros que sean necesarios... a saber si VB8 :

Private Sub MiFuncion(ByVal e As Object, ByVal sender As DataGridViewCellEventArgs)

Saludos,

Pep Lluis,

# re: Totalizar una Columna en un DataGridView

Wednesday, July 23, 2008 3:10 AM by peplluis

Hola Fernando!

Gracias por tus amables palabras... dime como puedo ayudarte, que parte te interesa detallar?

Espero tus noticias,

Pep Lluis,

# en que evento se coloca el manejador

Thursday, July 31, 2008 12:48 PM by jartiem

Saludos.

Mi preguntan es en que parte se coloca esta porcion de codigo

.. Handles Me.Load

'Disparar el calculo cada vez que editamos

AddHandler Me.dataGridView1.CellEndEdit, AddressOf Sumar

'Calcular el contenido inicial de la columna

Me.dataGridView1.Columns(3).HeaderText = "Salario"

Me.dataGridView1.AllowUserToAddRows = False

Me.dataGridView1.CurrentCell = dataGridView1.Rows(0).Cells(3)

Sumar()

..

End Sub

# re: Totalizar una Columna en un DataGridView

Thursday, August 07, 2008 4:17 AM by peplluis

Hola Jartiem,

El evento hace referencia al Form.Load en este caso, aunque puedes añadir el AddHandler en cualquier funcion de inicializacion.

Saludos,

Pep Lluis,

# re: Totalizar una Columna en un DataGridView

Friday, August 08, 2008 8:52 AM by fernando

Amigo muy bueno tu ejemplo no se si me puedes ayudar con el codigo completo a fsigu, en hotmail.

Muchas gracias

# re: Totalizar una Columna en un DataGridView

Thursday, November 13, 2008 7:45 AM by Jose

Muy interesante, pero.

Como conseguir el resultado del saldo en una tercera columna en un DataGridView

Ejemplo 1ª ingreso 2ªPago 3ºSaldo

1ª ingreso 500 2ªPago 100 3ºSaldo = 400

1ª ingreso 600 2ªPago 200 3ºSaldo = 800

1ª ingreso 0 2ªPago 600 3ºSaldo = 200

Espero haberme explicado

Agradecería me ayudaran ya que llevo unos días dándole vueltas sin ningún resultado

Muchas gracias.

José

# Columna adicional

Tuesday, April 07, 2009 10:51 AM by Victor

Saludos, par aun columna adicional, solo has la opercion a nivel de query por sql

# re: Totalizar una Columna en un DataGridView

Saturday, July 11, 2009 2:51 PM by Stell

Me puedes mandar el codigo completo.....

 Por favor

# re: Totalizar una Columna en un DataGridView

Wednesday, July 15, 2009 1:41 AM by peplluis

Disculpa Stell,

Que version de visual Studio estas utilizando?

Espero tus noticias,

Pep Lluis,

# re: Totalizar una Columna en un DataGridView

Friday, January 08, 2010 3:14 PM by Eduardo

Amigo, muy bueno el ejemplo, quisiera que me ayudes con el codigo completo ya que quisiera ampliar mis conocimientos en lo de los datagrids,te agradeceré por la ayuda

# re: Totalizar una Columna en un DataGridView

Thursday, January 14, 2010 5:27 AM by peplluis

Hola Eduardo,

Solo tienes que insertar ese codigo o utilizar la idea que muestra, dentro de tu proyecto y en tu estructura de datos... pues seguro que no coincide con la mostrada.

En todo caso si tienes dudas, puedes contactarme a traves de [Contact] y avanzamos sobre lo que necesitas.

Saludos,

Pep Lluis,

# sumar en decimales los valores del la columna de datagrid

Thursday, February 10, 2011 12:19 PM by Alfred Hidalgo

HOLA AMIGO,  LA  VERDAD  LA  SUMA DE  DATAGRID  ES  MUY IMPORTANTE Y OS  DOY LA GRACIAS  POR  COLGAR  BUESTRO EJEMPLO, PERO,  HAY  CIERTAS  DUDAS QUE NO LOGRO ENTENDER, Y  UNA  DE ELLAS,  ES  COMO LOGRAR APARECER EN  LA ULTIMA  FILA  EL IMPORTE DE TOTALES.

OTRA  DUDA ES  CUANDO  TENGO CANTIDADES  CON DECIMALES EN EL DATAGRID, ESTE  ME  SACA UNA SUMA CON ENTEROS, YA  HE  PROBADO  DE TODO, PERO AL  EJECUTAR, NO ME  SACA  NADA,  YO QUIERO QUE LA SUMA  DE LOS  VALORES DEL DATAGRID ME  SALGAN EN  DECIMALES.

PUES ESPERO BUESTRAS  RESPUESTAS

OS  AGRADEZCO mucho

# re: Totalizar una Columna en un DataGridView

Friday, February 18, 2011 4:49 PM by peplluis

Hola Alfred,

Podrias dirigirte a los foros para formular tu pregunta o contactarme directamente?

A traves del blog se hace casi imposible establecer una conversacion.

Saludos,

Pep Lluis,

# re: Totalizar una Columna en un DataGridView

Tuesday, April 12, 2011 4:27 PM by EPC

Hey tengo una pregunta. Estoy teniendo problemas con el dt me da error y ademas quiero que el total aparezca en un textbox.

# recorrer celdas Columna en un DataGridView

Wednesday, July 13, 2011 11:20 AM by alan

necesito urgente como comparar datos de las celdas de una columna de un datagridview, y me arroje el mayor valor en un textbox.. los datos han sido ingresados sin ninguna conexion a una bse de datos ..

# re: Totalizar una Columna en un DataGridView

Sunday, January 08, 2012 4:11 PM by alex

podrias poner el link de descarga del codigo si no fuese mucha molestia.

De antemano gracias,

Saludos

# re: Totalizar una Columna en un DataGridView

Sunday, January 08, 2012 10:09 PM by alex

Me interesa bastante este codigo, estoy trabajando una aplicaciones en la cual necesito hacer precisamente esto, pero en vb.net ~ he escrito lo mismo pero solo me bota errores de index que no corresponde. Si podrias proporcionar el codigo completo seria genial.

Saludos,

# re: Totalizar una Columna en un DataGridView

Thursday, January 12, 2012 5:31 PM by peplluis

Hola Alex,

Todo el codigo que necesitas esta posteado en el mismo articulo. Solo debes crear un nuevo proyecto de Visual Studio y copiar cada segmento en su ubicacion... Load, etc.

Si aun y asi continuas sin poder rodar el codigo, por favor avisame.

PepLluis,

# re: Totalizar una Columna en un DataGridView

Monday, February 27, 2012 10:12 PM by Julian

Hola me gustaria insertar datos en una factura y que a su vez agregue los datos en un datagridview, ademas necesito que actualice al guardar pues no he podido hacerlo

 

# re: Totalizar una Columna en un DataGridView

Wednesday, March 21, 2012 4:16 PM by Jose

Tengo una tabla llamada "Tbl_RegistroHoras" la cual contiene el "Id" de la actividad y varios campos llamados "1", "2", "3"..."31", que representan los dias del mes y al final tengo otro campo llamado "Total". La idea es que en el DataGridView, el usuario pueda modificar los datos del DataGridView, que representaran horas que el usuario invirtio en una actividad. A este DataGridView necesito colocarle una fila de total (Mostrara el total de la Suma por Columnas) y una columna de tota (Mostrara la suma por fila de toda las columnas de días).

Estoy usando =(Me.DataGridView1.DataSource = Me.BindingSource1) para enlazar el DataGrid con el 'bindingsource.

Para actualizar los datos uso un botón = Me.AdaptadorDeDatos.Update(CType(Me.BindingSource1.DataSource, DataTable))

Estube tratando de realizar la suma (La que se mostraria como columna y sumaria las filas de las columnas) de la siguiente forma:

If e.ColumnIndex >= 4 Or e.ColumnIndex < 35 Then

 Me.DataGridView1.Columns.Item(35).Selected = True

 Dim Resultado As Double = Val(Me.DataGridView1.Rows(e.RowIndex).Cells(4).Value) + Val(Me.DataGridView1.Rows(e.RowIndex).Cells(5).Value)

 Me.DataGridView1.Rows(e.RowIndex).Cells(35).Value = Resultado.ToString

End If

El Meollo: cuando intento sumar un valor de una celda cambiada con otro que aun no tiene valor me da error.

Intente cambiar Val(...) por CType(...) y por CInt(...) pero me proboca error al actualizar.

Espero su colaboración con este problema... de antemano gracias!

# re: Totalizar una Columna en un DataGridView

Thursday, April 12, 2012 12:23 AM by Angel

Redondeo a 2 decimales en una columna

DataGridView1.Columns(3).DefaultCellStyle.Format = "C2"  'aca indica q redondeara a dos decimales

# re: Totalizar una Columna en un DataGridView

Saturday, June 09, 2012 3:43 PM by Yosbel

Y como lo hago en Visual Estudio 2010 en C#???

# re: Totalizar una Columna en un DataGridView

Wednesday, August 29, 2012 3:48 PM by BT

Gracias muy amable

# re:Como le Pongo el Total en una Columna del sub total en DGV

Saturday, February 16, 2013 4:08 PM by Jorge Luis

Por favor si pudieras ayudarme

1.- Como puedo eliminar una fila en DataGridView

2.- Como programo el boton eliminar en un DataGridView en memoria

3.- Comp programo la impresion de la factura

# re: Totalizar una Columna en un DataGridView

Sunday, April 07, 2013 11:17 PM by luis.lat

Hola necesito ayuda estoy tratando de hacer una aplicacion parecida a excel con un datagridview la propiedad selectionMode la tengo en CellSelect. lo que quiero saber es como sumar los valores que estan en las celdas seleccionadas y mostrar la suma en el mismo datagridview

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: