Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: nolasco281 en 26 Mayo 2015, 07:56 am



Título: Calcular datos en datagriew y mostrarlos en txtBox
Publicado por: nolasco281 en 26 Mayo 2015, 07:56 am
Hola como están.
Mi consulta es la siguiente, Como puedo calcular datos en mi griewview Control(Telerik) y mostrarlos en un textbox el problema con que me topo es que estoy haciendo un form de facturación (imagen).

Cuando agrego el producto el subtotal me la va cargando según el precio del articulo el problema viene cuando borro un producto del griewview como hago para que el subtotal baje, según esa columna del griewview.

(http://1.bp.blogspot.com/-l_85W_DJr5Q/VWQIua-1OZI/AAAAAAAAA7s/olHO7C7mX2Y/s1600/Factura01.png)

Esto se puede, no comparto ningún código porque no tengo nada aun, no se me ocurre como manipular una columna del griewview todavía.

Saludos.


Título: Re: Calcular datos en datagriew y mostrarlos en txtBox
Publicado por: Eleкtro en 26 Mayo 2015, 08:46 am
Suscríbete al evento ItemRemoving, examinas el valor de la celda de la fila que estás eliminando, y lo restas al subtotal,
u otra forma, suscríbete al evento ItemRemoved, y seguidamente iteras las celdas de esa columna para volver a hacer la suma descartando automaticamente la fila que ya no existe.

Saludos


Título: Re: Calcular datos en datagriew y mostrarlos en txtBox
Publicado por: seba123neo en 26 Mayo 2015, 08:52 am
pues basicamente tenes que hacerte una funcion que recorra esa columna y te devuelva el resultado, y que cada vez que agreges o elimines la llamas para actualizar el numero.

el tema de todo esto, es que lo ideal no es que dependas de una columna. que pasa si algun dia se te ocurre agregar mas columnas, tendrias que cambiar el indice de la columna en todos los lados que lo uses, seria inmanejable.

Lo ideal (y en cualquier sistema de facturacion serio lo hacen asi), es usar clases y objetos, las clases se encargan de realizar todos los calculos internamente (totales, impuestos, etc) con sus propiedades get/set y metodos. de esa forma te olvidas de la interfaz grafica y no tenes que andar recorriendo ningun control para calcular nada. claro que para hacer esto tenes que saber bien en manejo de clases (POO) y como usarlas.

Cada entidad del programa deberia ser una clase (clientes, articulos, sucursales, depositos) incluso el comprobante (la factura) es una clase con objetos articulos dentro (arraylist de objetos).

saludos.


Título: Re: Calcular datos en datagriew y mostrarlos en txtBox
Publicado por: nolasco281 en 26 Mayo 2015, 09:07 am
Hola gracias por responder a los dos.

    
Código
  1. Private Function Sumar(ByVal nombre_Columna As String, ByVal Dgv As DataGridView) As Double
  2.       Dim Total As Double = 0
  3.       ' recorrer las filas y obtener los items de la columna indicada en "nombre_Columna"  
  4.       Try
  5.          For i As Integer = 0 To Dgv.RowCount - 1
  6.             Total = Total + CDbl(Dgv.Item(nombre_Columna, i).Value)
  7.          Next
  8.       Catch ex As Exception
  9.          MsgBox(ex.Message.ToString)
  10.       End Try
  11.       Return Total
  12.    End Function

No se cual es el equivalente DataGridView en Telerik

Ya que si uso el RadGriewView me muestra un error en la parte del item
Código
  1. Total = Total + CDbl(Dgv.Item(nombre_Columna, i).Value)

Luego en el evento CellValueChanged
Código
  1. txtSubTotal.Text = FormatCurrency(Sumar("Monto", gvFactura), 2).ToString 'Me muestra un error por que gvFactura no es parte del DataGridView

luego en un evento de remover
Código
  1. ' La culmna a sumar se llama Monto
  2.   txtSubTotal.Text = FormatCurrency(Sumar("Monto", gvFactura), 2).ToString()  

Veo que el unico evento que esta es el Control Removed

No esta  ItemRemoving ni ItemRemoved.

Saludos.


Título: Re: Calcular datos en datagriew y mostrarlos en txtBox
Publicado por: Eleкtro en 26 Mayo 2015, 09:55 am
No esta  ItemRemoving ni ItemRemoved.

Tienes razón, pensaba en otra cosa, es RadGridView.UserDeletingRow y RadGridView.UserDeletedRow

Saludos


Título: Re: Calcular datos en datagriew y mostrarlos en txtBox
Publicado por: nolasco281 en 26 Mayo 2015, 10:27 am
Hola ya casi lo tengo resuelto.

el problema es en la funcion es en esta instruccion.

Código
  1. total = total + CDbl(dgv.Item(nombre_Columna, a).Value)

Segun yo su equivalente es. Oh no es asi?.

Código
  1. total = total + CDbl(dgv.Rows.Add(nombre_Columna, a).Value)

Saludos.


Título: Re: Calcular datos en datagriew y mostrarlos en txtBox
Publicado por: nolasco281 en 26 Mayo 2015, 13:33 pm
Hola ya lo resolvi  

Me estaba complicando la vida.

(http://4.bp.blogspot.com/-wwUJPhuswOo/VWRYP2VnYlI/AAAAAAAAA78/mVzq_1Sagw0/s1600/ResueltoFac.png)

El dataGriev tiene un evento de sumar summary
Código
  1. Dim summaryItem As New GridViewSummaryItem("Monto", "Total = {0}", GridAggregateFunction.Sum)
  2.  
  3. Dim summaryRowItem As New GridViewSummaryRowItem()
  4.  
  5. summaryRowItem.Add(summaryItem)
  6. Me.gvFactura.SummaryRowsTop.Add(summaryRowItem)
  7.  

Y luego use el evento GroupSummaryEvaluate para manipular el dato.
Código
  1. Private Sub GvFactura_GroupSummaryEvaluate(sender As System.Object, e As Telerik.WinControls.UI.GroupSummaryEvaluationEventArgs) Handles gvFactura.GroupSummaryEvaluate
  2.        txtSubtotal.Text = e.Value
  3.    End Sub

Saludos.