Pregunta TabControl y DataRepeater

  • jueves, 30 de septiembre de 2010 18:51
     
      Tiene código

    Hola a todos,

    Tengo una aplicacion WinForms en VB2008.

    En un Formulario tengo un TabControl con 2 TabPages, en cada uno de los TabPages tengo un control DataRepearter y cada DataRepeater tiene controles enlazados y controles no enlazados.

    Hasta aca todo bien, el problema se genera cuando quiero agregar un nuevo registro en ambos DataRepearter y asignar un valor a algunos controles  con el siguiente codigo:

        Me.DataRepeater1.AddNew()
        Me.DataRepeater1.CurrentItem.Controls("TextBox1").Text = "1111"
        '...
        'Con el mismo modo asigno valores a varios controles del DataRepeater1 sin problemas
        Me.DataRepeater2.AddNew()
        Me.DataRepeater2.CurrentItem.Controls("TextBox2").Text = "2222"
        'Pero esta ultima linea genera un error
    
    

    La ultima linea me genera una excepcion del tipo:

    No se controlo NullReferenceException Referencia a objeto no establecida como instancia de un objeto.

    La situacion es extraña, es como si no se inicializaran los controles del TabPage2, puede ser?.

    Si alguien tiene alguna sugerencia, sera bienvenida...


    Jorge Conil
    • Cambiado Enrique M. MontejoMVP jueves, 19 de abril de 2012 16:53 Controles de Windows Forms (De:Lenguaje VB.NET)
    •  

Todas las respuestas

  • viernes, 01 de octubre de 2010 11:56
    Moderador
     
     

    hola

    podrias validar si en el DataRepeater2 se encuenhtra este control Textbox2, segun veo puede que no lo este encontrando

    ademas que tipo de dato devuelve la coleccion Controls, es un TextBox ?

    Dim text2 As TextBox = TryCast(Me.DataRepeater2.CurrentItem.Controls("TextBox2"), TextBox)

    If text2 Is Nothing Then

       MessageBox.Show("no se encontro el textbox")

       Return

    End If

    text2.Text = "2222"

    por ahi esta validacion ayude a descubrir la causa del problema

    saludios


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
  • viernes, 01 de octubre de 2010 12:55
     
     
    La voy a probar y te comento. Desde ya, gracias como siempre.

    Jorge Conil
  • viernes, 01 de octubre de 2010 17:59
     
      Tiene código

    Leandro,

    Lo probe y no me funciono, volvio a dar el mismo error ahora en el TryCast...

    El control esta bien dentro del DataRepeater, debe ser un problema del momento en el que quiero ejecutar la sentencia.

    Ahora agregue un boton con estas dos sentencias y lo ejecuto luego de haber agregado los renglones en los DataRepeater y anda bien.

    Me
    .DataRepeater1.CurrentItem.Controls("TextBox1"
    ).Text = "1111"
    
    Me .DataRepeater2.CurrentItem.Controls("TextBox2" ).Text = "2222"

    Por el momento lo dejo asi, igual si alguien quiere sugerir algo, sera bienvenido.

     


    Jorge Conil
  • sábado, 02 de octubre de 2010 3:49
    Moderador
     
     


    volvio a dar el mismo error ahora en el TryCast.

    estas seguro que usaste el TrayCast, porque justamente este lo qeu evita es un error al castear, sino que devuelve Nothing

    si da un erro entonces quiere decir que el CurrentItem es el que viene en Nothing

    prueba usando

    If Me.DataRepeater2.CurrentItem Is Nothing Then

       MessageBox.Show("el CurrentItem es Nulo")

       Return

    End If

    Dim text2 As TextBox = TryCast(Me.DataRepeater2.CurrentItem.Controls("TextBox2"), TextBox)

    If text2 Is Nothing Then

       MessageBox.Show("no se encontro el textbox")

       Return

    End If

    text2.Text = "2222"

    de esta forma sabras si es este el que genera la problematica, por ahi habria que ver si hay otra forma de seleccionar que no sea con el current

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
  • domingo, 15 de abril de 2012 22:38
     
      Tiene código

    Yo tengo un problema con el mismo control, es probable que sea algo tonto,  pero como es primera vez que lo uso no se que hacer.
    Mi datarepeater se llama drp y lo uso de la siguiente manera

            drp.AddNew()
            drp.CurrentItem.Controls("lblnumero").Text = "000"

    Cuando ejecuto ese codigo me da un error de "Object reference not set to an instance of an object." en la linea de addnew()

    De verdad que estoy desconcertado con eso