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.
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
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.
Hola gracias por responder a los dos.
Private Function Sumar(ByVal nombre_Columna As String, ByVal Dgv As DataGridView) As Double
Dim Total As Double = 0
' recorrer las filas y obtener los items de la columna indicada en "nombre_Columna"
Try
For i As Integer = 0 To Dgv.RowCount - 1
Total = Total + CDbl(Dgv.Item(nombre_Columna, i).Value)
Next
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
Return Total
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
Total = Total + CDbl(Dgv.Item(nombre_Columna, i).Value)
Luego en el evento CellValueChanged
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
' La culmna a sumar se llama Monto
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.
Cita de: nolasco281 en 26 Mayo 2015, 09:07 AMNo esta ItemRemoving ni ItemRemoved.
Tienes razón, pensaba en otra cosa, es
RadGridView.UserDeletingRow y
RadGridView.UserDeletedRowSaludos
Hola ya casi lo tengo resuelto.
el problema es en la funcion es en esta instruccion.
total = total + CDbl(dgv.Item(nombre_Columna, a).Value)
Segun yo su equivalente es. Oh no es asi?.
total = total + CDbl(dgv.Rows.Add(nombre_Columna, a).Value)
Saludos.
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
Dim summaryItem As New GridViewSummaryItem("Monto", "Total = {0}", GridAggregateFunction.Sum)
Dim summaryRowItem As New GridViewSummaryRowItem()
summaryRowItem.Add(summaryItem)
Me.gvFactura.SummaryRowsTop.Add(summaryRowItem)
Y luego use el evento GroupSummaryEvaluate para manipular el dato.
Private Sub GvFactura_GroupSummaryEvaluate(sender As System.Object, e As Telerik.WinControls.UI.GroupSummaryEvaluationEventArgs) Handles gvFactura.GroupSummaryEvaluate
txtSubtotal.Text = e.Value
End Sub
Saludos.