Foros del Web » Programación para mayores de 30 ;) » .NET »

actualizar campo en tabla

Estas en el tema de actualizar campo en tabla en el foro de .NET en Foros del Web. Hola a todos, mi problemas es el siguiente: estoy tratando de armar un carrito de compras, y todo va bien hasta que trato de cambiar ...
  #1 (permalink)  
Antiguo 02/06/2009, 17:23
 
Fecha de Ingreso: febrero-2008
Mensajes: 9
Antigüedad: 16 años, 2 meses
Puntos: 0
actualizar campo en tabla

Hola a todos, mi problemas es el siguiente:
estoy tratando de armar un carrito de compras, y todo va bien hasta que trato de cambiar la cantidad de productos del carrito.

primero genero el carrito

Function makeCart() As System.Data.DataTable

objDT = New System.Data.DataTable("Cart")

objDT.Columns.Add("id_cliente", GetType(Integer))
objDT.Columns.Add("id_dis", GetType(Integer))
objDT.Columns.Add("Cantidad", GetType(Integer))
objDT.Columns.Add("ID_producto", GetType(Integer))
objDT.Columns.Add("Titulo", GetType(String))
objDT.Columns.Add("PrecioUnitario", GetType(Decimal))
objDT.Columns.Add("PrecioDescuento", GetType(Decimal))
objDT.Columns.Add("PorcentajeDescuento", GetType(Decimal))
objDT.Columns.Add("PrecioEnvio", GetType(Decimal))
objDT.Columns.Add("MetodoEnvio", GetType(Decimal))
objDT.Columns.Add("SubTotal", GetType(Decimal))
objDT.Columns.Add("Total", GetType(Decimal))

Return objDT

luego agrego articulos

Function AddToCart(ByVal id_producto As String, ByVal DT As System.Data.DataTable, ByVal cliente As String) As System.Data.DataTable

objDT = DT

Dim objProducto As New productos
Dim producto As Producto_det
Dim blnMatch As Boolean = False

producto = objProducto.ObtenerProducto(id_producto)

For Each objDR In objDT.Rows
If objDR("ID_producto") = producto.ID_Producto Then
objDR("Cantidad") += 1
blnMatch = True
Exit For
End If
Next

If Not blnMatch Then
objDR = objDT.NewRow

objDR("id_cliente") = cliente
objDR("id_dis") = producto.id_dis
objDR("Cantidad") = 1
objDR("ID_producto") = producto.ID_Producto
objDR("Titulo") = producto.Titulo
objDR("MetodoEnvio") = 1
objDR("PrecioUnitario") = Decimal.Parse(producto.PrecioUnitario)
objDR("PrecioDescuento") = Decimal.Parse(producto.PrecioDescuento)
objDR("PorcentajeDescuento") = producto.PorcDescuento

objDT.Rows.Add(objDR)
End If

Return objDT
End Function

caulculo totales

Function GetItemSubTotal(ByVal DT As System.Data.DataTable) As Decimal

Dim intCounter As Integer
Dim decRunningTotal As Decimal

For intCounter = 0 To DT.Rows.Count - 1
objDR = DT.Rows(intCounter)

If objDR("PrecioDescuento") <> "0" Then
decRunningTotal += (objDR("PrecioDescuento") * objDR("Cantidad"))
Else
decRunningTotal += (objDR("PrecioUnitario") * objDR("Cantidad"))
End If

objDR("Subtotal") = decRunningTotal
Next

Return decRunningTotal
End Function

Function GetItemTotal(ByVal DT As System.Data.DataTable, ByVal envio As Decimal) As Decimal
Dim total As Decimal

For Each objDR In DT.Rows
total = objDR("Subtotal") + envio
objDR("PrecioEnvio") = envio
objDR("Total") = total
Next

Return total
End Function

entonces cuando quiero pasarle la cantidad atraves de un template colum en un gridview (caja de texto), utilizo primero

txt= CType(row.FindControl("txtQuantity"), TextBox)

para encontrar la caja de texto en el grid

y le paso el valor a la tabla

datarow("cantidad") = txt.text

lo que noto es que esa cantidad que le estoy pasando me la toma en todos los articulos que agrego, y si me lo calcula, pero con la misma cantidad de articulos para todos los productos
  #2 (permalink)  
Antiguo 03/06/2009, 09:49
 
Fecha de Ingreso: febrero-2008
Mensajes: 9
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: actualizar campo en tabla

todo se resolvio con un ciclo

For Each row As GridViewRow In Me.gvwOrderItems.Rows
Dim txt As TextBox
txt = CType(row.FindControl("txtQuantity"), TextBox)
DT.Rows(contador)("Cantidad") = txt.Text
contador = contador + 1
Next
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:36.