none
variable publica se recetea a valor original RRS feed

  • Pregunta

  • Hola, tengo una pagina donde tengo

     

    Imports System.Data

    Imports System.Data.SqlClient

    Imports System.Data.OleDb

    Partial Class asociados

    Inherits System.Web.UI.Page

    Public control As Integer

    Public codigo As String

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If IsPostBack = False Then 'la primera ves

    control = 0

    codigo = ""

    rellenar(Nothing)

    End If

    End Sub

    y asi las sub

    pero en un momento dado en una sub la variable control cambia de valor ej. control = 3 y en otra sun diferente la evaluo y tiene cero. Alguien podria aportar porque se resetea?

    martes, 3 de abril de 2007 15:54

Todas las respuestas

  •  

    Hola,

     

    Normal... al hacer un postback cualquiera perderas el valor de la variable, y te pondra el valor por defecto en un integer... o sea 0.

     

    Tienes dos soluciones... una es probar a almecenar la varible en el viewstate.

     

    Y otra es hacer la variable SHARED, pero en este caso todas las paginas compartirian la variable y por lo tanto el valor.

     

    Recomiendo que lo guardes en el viewstate o en la session

     

    Un saludo.

    martes, 3 de abril de 2007 16:16
    Moderador
  • Gracias Javier, lo he puesto asi

    control = 1

    Me.SaveViewState()

     

    y en donde lo quiero volver a evaluar asi

    Me.LoadViewState(control)

    if control = 2 then

    kjdslkjdksjdk

    sjkdjskjdl

    else

    kjdksjdlkj

    ksjdksj

    end if

     

    esta correcto asi?

     

    si esta correcto asi, yo pensaba que solo los controles de una pagina y la pagina en si aplicaban al viewstate, pero no sabia que a las variables?

     

    martes, 3 de abril de 2007 16:40
  •  

    Hola,

     

    Lo que yo queria decir es algo parecido:

     

    Private sUsuario As String

     

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     

         If Page.IsPostBack Then

              sUsuario = Me.ViewState("sUsuario")

         End If

     

    End Sub

     

    Public Sub CargarDatos()

     

         sUsuario = CargarUsuario()

         Me.ViewState.Add("sUsuario", sUsuario)

     

    End Sub

     

    Algo asi jejejejej

     

    Un saludo.

    martes, 3 de abril de 2007 17:21
    Moderador
  • me da un error al momento cargar el viewstate con el loadviewstare

     

    public control as integer

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If IsPostBack = False Then 'la primera ves

    control = 0

    codigo = ""

    rellenar(Nothing)

    Me.ViewState.Add("control", control)

    End If

    End Sub

     

    ' boton editar

    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click

    control = 2    ' cambia y guarda el valor

    Me.SaveViewState()

    End Sub

     

    ' boton grabar

    Protected Sub Button5_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button5.Click

    Me.LoadViewState(control)

     

    if control = 2 then

     

    al cargar el viewstate de la variable control, el cual deberia ser 2 da el siguiente error

     

    Unable to cast object of type 'System.Int32' to type 'System.Collections.ArrayList'.

     

    que mas debo de hacer?

     

    martes, 3 de abril de 2007 20:35
  •  

    jejejeje

     

    prueba a ponerle otro nombre a tu variable... puede que se este haciendo un lio con la coleccion de controles del objeto page.

     

    un saludo

    martes, 3 de abril de 2007 21:33
    Moderador
  • Javier, fijate que cambie de nombre a la variable y persiste el error

    alguna otra idea?

    Talves se me olvido comentar que estoy en Vs 2005 trabajando y no Vs2003

    Nunca he trabajado con viewstate

    miércoles, 4 de abril de 2007 14:15