none
SUMAR FILAS DE UN DATAGRIDVIEW Y MOSTRAR EN FILA DATAGRIDVIEW RRS feed

  • Pregunta

  • hola  saludos a todos

    me pueden ayudar con un pequeño ejercicios 

    tengo un datagridview1    en visual studio vb

    kiero sumar las filas y mostrar en el mismo datagridview 

    columna importe

    10

    12

    __

    22   sumar y mostrar en el mismo datagridview 

    ayudame


    sábado, 10 de septiembre de 2016 16:28

Respuestas

  • victor_marquez,

    El objeto DataGridView1 obtiene los datos a partir de un objeto de tipo DataTable a través de la propiedad DataSource, eso es vincular o bindear:

    datagridview1.datasource = dtcliente

    En este caso puedes agregar un nuevo objeto de tipo DataRow conteniendo la sumatoria (antes de vincular la fuente de datos con el objeto DataGridView1) o puedes implementar la consulta de selección de manera que retorne una fila adicional conteniendo la sumatoria:

    SELECT 
        Descripcion, MAX(Precio), MAX(Cantidad), SUM(Importe)
    FROM 
        productos 
    WHERE 
        descripcion = @Consultar 
    GROUP BY ROLLUP
        (Descripcion)


    Coloca los nombres de columnas adecuados y prueba la consulta.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 10 de septiembre de 2016 20:13

Todas las respuestas

  • victor_marquez,

    Para sumar los elementos de una colección lo razonable es iterar por la colección y acumular los valores en una variable, para el caso de un objeto de tipo DataGridView lo propio es recorrer todas las filas (For Each, For, etc.) y acumular el valor de cada celda en una variable, puedes hacerlo simple (aunque el procedimiento es el mismo) si te apoyas con LinQ.

    Private Sub btrSumarFilas_Click(sender As Object, e As EventArgs)
    	'Crear columna
    	Dim col1 As New DataGridViewTextBoxColumn()
    
    	col1.Name = "colImporte"
    	col1.HeaderText = "Importe"
    
    	DataGridView1.Columns.Add(col1)
    
    	'Agregar valores de prueba a las celdas
    	DataGridView1.Rows.Add("10")
    	DataGridView1.Rows.Add("12")
    
    	'Sumar valores de filas y agregar una nueva fila con la sumatoria            
    	DataGridView1.Rows.Add(DataGridView1.Rows.Cast(Of DataGridViewRow)() _
                    .Sum(Function(x) Convert.ToInt32(x.Cells("colImporte").Value)).ToString())
    End Sub



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    sábado, 10 de septiembre de 2016 16:52
  • victor_marquez,

    En caso el uso de LinQ te complique (al parecer recién te inicias) te dejo el código que itera por cada fila de la colección de filas y acumula el valor en una variable:

            DataGridView1.AllowUserToAddRows = False
    
            'Declarar variable que acumulará la sumatoria de las celdas
            Dim Sumatoria As Integer = 0
    
            'Recorrer las filas del objeto de tipo DataGridView
            For Each row As DataGridViewRow In DataGridView1.Rows
                'Acumular valores
                Sumatoria += Convert.ToInt32(row.Cells("colImporte").Value)
            Next
    
            'Agregar una nueva fila conteniendo el valor de la sumatoria
            DataGridView1.Rows.Add(Sumatoria.ToString)
    
            'Pintamos la celda que contiene el resultado de color rojo
            DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells("ColImporte").Style.BackColor = Color.Red



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    sábado, 10 de septiembre de 2016 17:35
  • victor_marquez,

    Vamos, si no te sale el resultado en base a los ejemplos propuestos por lo menos deberías mencionar cuál es el problema que obtienes, ¿alguna excepción? ¿cuál? ¿podrías dar detalle del mismo?. 

    Así mismo, ¿podrías adjuntar el código que tienes para revisar e intentar dar con el problema que presentas?

    sábado, 10 de septiembre de 2016 18:15
  • victor_marquez,

    ¿Vinculas el objeto DataGridView1 con una fuente de datos a través de la propiedad DataSource? ¿es un lista de un tipo Custom? ¿es un objeto de tipo DataTable?

    Si el objeto DataGridView1 vincula los datos a través de la propiedad DataSource, los cambios se deben realizar sobre la fuente de datos y no sobre el objeto DataGridView1, te agradeceré amplíes el caso mencionando como cargas los datos (de preferencia colocar el código).

    sábado, 10 de septiembre de 2016 18:33
  • victor_marquez,

    ¿Pero entonces como cargas los datos al objeto DataGridView1? ¿fila a fila?

    Lo siento, pero sin mayores detalles no puedo hacer mucho, te dejaré el código -el mismo que propuse anteriormente- si obtienes alguna excepción sobre lo propuesto te agradeceré lo indiques con el detalle pertinente:

    'Declarar variable que acumulará la sumatoria de las celdas
    Dim Sumatoria As Integer = 0
    
    'Recorrer las filas del objeto de tipo DataGridView
    For Each row As DataGridViewRow In DataGridView1.Rows
            'Acumular valores
            Sumatoria += Convert.ToInt32(row.Cells(3).Value)
    Next
    
    'Agregar una nueva fila conteniendo el valor de la sumatoria
    DataGridView1.Rows.Add("TOTAL", "", "", Sumatoria.ToString)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.



    sábado, 10 de septiembre de 2016 18:51
  • victor_marquez,

    El objeto DataGridView1 obtiene los datos a partir de un objeto de tipo DataTable a través de la propiedad DataSource, eso es vincular o bindear:

    datagridview1.datasource = dtcliente

    En este caso puedes agregar un nuevo objeto de tipo DataRow conteniendo la sumatoria (antes de vincular la fuente de datos con el objeto DataGridView1) o puedes implementar la consulta de selección de manera que retorne una fila adicional conteniendo la sumatoria:

    SELECT 
        Descripcion, MAX(Precio), MAX(Cantidad), SUM(Importe)
    FROM 
        productos 
    WHERE 
        descripcion = @Consultar 
    GROUP BY ROLLUP
        (Descripcion)


    Coloca los nombres de columnas adecuados y prueba la consulta.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 10 de septiembre de 2016 20:13
  • no me sale



    domingo, 11 de septiembre de 2016 1:23