Ver Mensaje Individual
  #12 (permalink)  
Antiguo 20/10/2009, 20:52
bacter
 
Fecha de Ingreso: abril-2004
Ubicación: mexico
Mensajes: 5
Antigüedad: 20 años, 10 meses
Puntos: 0
Respuesta: Variable session a DB

Hola soy nuevo en el mundo de asp me he encontrado con este post y pues tengo el mismo problema solo tengo una duda donde y como declaras la variable de sesion cono la asignas a un datatable y como la guardas para posteriormente utilizarla de ante mano gracias



Cita:
Iniciado por estlui Ver Mensaje
Hola Trulala de cordoba, muchas gracias por tu ayuda....

Un ultimo tip, por favor..... ya termine la mejora a mi aplicacion y al estar probandolo note un comportamiento medio raro en el gridview que se llena con un datatable.....

vamos por pasos....:

- Al cargar la pagina, se crea el carrito contenedor en una variable de session que va llenando un DataTable con las columnas que necesito.

- Despues con un boton voy agregando registros al DataTable Session y los voy mostrando en un GridView.

- Dentro del GridView puse un boton, que se repite en cada registro del Grid, que sirve para eliminar el registro que se seleccione.

-->> Lo raro del asunto es que en ocaciones despues de llenar el Grid y quiero eliminar algun registro me manda este error: ERROR: There is no row at position 0, y digo que en ocaciones porque a veces funciona muy bien.... puede madar el error cuando tiene uno o varios registros..... y puede aparecer ERROR: There is no row at position 1.

Que sucedera?

Este es mi codigo para agregar al datatable el registro capturado:

Código:
Protected Sub btn_agregar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_agregar.Click
        Try
            Me.lb_error_partida.Text = ""
            objDT = Session("myCarrito")
            objDR = objDT.NewRow
            Me.labelerror.Text = objDT.Rows.Count
            objDR("numero_carrito") = Me.lb_carrito.Text
            objDR("descripcion") = Me.tb_desc.Text
            If Me.ddl_unidad.SelectedValue = "" Then
                Me.lb_error_partida.Text = "Debe seleccionar la unidad de medida."
                Exit Sub
            Else
                objDR("unidad_medida") = Me.ddl_unidad.SelectedValue
            End If
            objDR("cantidad") = Me.tb_cantidad.Text
            objDR("precio_unitario") = Decimal.Parse(Me.tb_precio.Text)
            objDR("total_mx") = Decimal.Parse(Me.lb_totalMX.Text)
            objDR("total_us") = Decimal.Parse(Me.lb_totalUS.Text)
            If Me.ddl_centrocostos.SelectedValue = "" Then
                Me.lb_error_partida.Text = "Debe seleccionar el centro de costos."
                Exit Sub
            Else
                objDR("centro_costos") = Me.ddl_centrocostos.SelectedValue
                objDR("depto") = Me.lb_depto.Text
            End If
            If Me.ddl_cuentaGL.SelectedValue = "" Then
                Me.lb_error_partida.Text = "Debe seleccionar la cuenta GL."
                Exit Sub
            Else
                objDR("cuenta_gl") = Me.ddl_cuentaGL.SelectedValue
            End If
            objDR("cuenta") = Me.lb_cuenta.Text
            objDT.Rows.Add(objDR)
            Session("myCarrito") = objDT
            Me.GV_carrito.DataSource = objDT
            Me.GV_carrito.DataBind()
            Me.lb_ODC_pesos.Text = FormatCurrency(total_mx())
            Me.lb_ODC_dolares.Text = FormatCurrency(total_dlls())
            Me.lb_odc_2.Text = FormatCurrency(total_2())
            Me.lb_odc_3.Text = FormatCurrency(total_3())
            Me.lb_odc_5.Text = FormatCurrency(total_5())
            Me.lb_odc_9.Text = FormatCurrency(total_9())
            Me.lb_saldo_2.Text = FormatCurrency(saldo_2())
            Me.lb_saldo_3.Text = FormatCurrency(saldo_3())
            Me.lb_saldo_5.Text = FormatCurrency(saldo_5())
            Me.lb_saldo_9.Text = FormatCurrency(saldo_9())
            Me.tb_desc.Text = ""
            Me.ddl_unidad.SelectedIndex = 0
            Me.tb_cantidad.Text = ""
            Me.tb_precio.Text = ""
            Me.lb_totalMX.Text = ""
            Me.lb_totalUS.Text = ""
            Me.ddl_centrocostos.SelectedIndex = 0
            Me.ddl_cuentaGL.SelectedIndex = 0
            Me.tb_desc.Focus()
            Me.Enviar.Enabled = True
            Me.GV_carrito.DataBind()
        Catch ex As Exception
            Beep()
            Me.lb_error_partida.Text = "*** Debe de llenar todos los campos de la partida y los datos deben de ser los adecuados. ***"
        End Try
    End Sub

Y este es para eliminar el registro al darle clic en su boton:

Código:
Protected Sub GV_carrito_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GV_carrito.RowDeleting
        Try
            objDT = Session("myCarrito")
            objDT.Rows(e.RowIndex).Delete()
            Session("myCarrito") = objDT
            Me.GV_carrito.DataSource = objDT
            Me.GV_carrito.DataBind()
            Me.lb_ODC_pesos.Text = total_mx()
            Me.lb_ODC_dolares.Text = total_dlls()
            Me.lb_odc_2.Text = total_2()
            Me.lb_odc_3.Text = total_3()
            Me.lb_odc_5.Text = total_5()
            Me.lb_odc_9.Text = total_9()
            Me.lb_saldo_2.Text = saldo_2()
            Me.lb_saldo_3.Text = saldo_3()
            Me.lb_saldo_5.Text = saldo_5()
            Me.lb_saldo_9.Text = saldo_9()
        Catch ex As Exception
            Me.labelerror.Text = "ERROR: " & ex.Message
        End Try


    End Sub

Muchisimas gracias!!!