TabControl y DataRepeater
-
jueves, 30 de septiembre de 2010 18:51
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:
La ultima linea me genera una excepcion del tipo: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 errorNo 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:56Moderador
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:55La voy a probar y te comento. Desde ya, gracias como siempre.
Jorge Conil -
viernes, 01 de octubre de 2010 17:59
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:49Moderador
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
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 maneradrp.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

