Aspnet-Textbox dinamicos y dudas varias

polaris
19 de Octubre del 2005
1.-Una vez generados textboxs dinamicos, ¿como obtener la información que contienen para realizar, por ejemplo, una inserción?

Yo los he generado con el siguiente codigo:
--------------------------------------------------------------------------------------
Public Sub hacerlineas()
Dim inlineas As Integer = CInt(TxtNLineas.Text)
If inlineas > 0 Then
For x = 1 To inlineas
Dim objlabel As Object
Dim objtexto As Object
Dim objbr As Object
objlabel = New System.Web.UI.WebControls.Label
objlabel.text = "Línea" & " " & x & " "
objlabel.font.bold = True
objtexto = New System.Web.UI.WebControls.TextBox
objbr = New System.Web.UI.HtmlControls.HtmlGenericControl
objtexto.id = "textbox" & x
objbr.innerhtml = "<br>"
PHolder1.Controls.Add(objlabel)
PHolder1.Controls.Add(objtexto)
PHolder1.Controls.Add(objbr)
Next x
End If
End Sub
-----------------------------------------------------------------------------------------------
Deduzco por el código que se autogeneran tantos textboxs como pongas en el texbox(txtlineas), y ademas se le asignan id desde 1 hasta el nº deseado,
quedando denominados como (textbox1,....,textboxn.). Todo ello lo almacenamos en un PlaceHolder llamado Pholder1.
Yo he realizado un intento fallido de obtener la información de los textboxs autogenerados, siguiendo la lógica de un procedimiento que uso para borrar
los textboxs, y que por supuesto funciona, es el siguiente:
------------------------------------------------------------------------------------------------
Private Sub limpiar()
Dim myForm As Control = Page.FindControl("Form1")
Dim ctl As Control
For Each ctl In myForm.Controls
If ctl.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox") Then
CType(ctl, TextBox).Text = ""
End If
Next ctl
end sub
-------------------------------------------------------------------------------------------------
Del que deduzco se crea un control llamado myform que se va a buscar y almacenar todo control que halla en el formulario, despues se crea otro control (ctl) y se hace una busqueda
de todos los controles(ctl) de la página(por lo tanto contenidos en myform) que sean textboxs para despues borrarlos(insertando "").
A partir de la lógica de este razonamiento yo elabore otro procedimiento con la esperanza de obtener el contenido de los textboxs, dinamicos. Por supuesto
no funciona. Es el siguiente:
--------------------------------------------------------------------------------------------------
Dim mypholder1 As Control = Page.FindControl("pholder1")
Dim ctl As Control
For Each ctl In mypholder1.controls
If ctl.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox") Then
Dim variable As String
variable = CType(ctl, TextBox).Text
conexion = New SqlConnection("server=EQUIPO; uid=oceans;pwd=oceans;database=oceans")
Dim sqllinea As String = "insert into telefonos(codservicio,telefono) values('" & codservicio & "','" & variable & "')"
'Dim sqllinea As String = "insert into telefonos(codservicio,telefono) values('" & 1 & "','" & 2 & "')"
conexion.Open()
comando = New SqlCommand(sqllinea, conexion)
comando.ExecuteNonQuery()
'CType(ctl, TextBox).Text = ""
Label2.Text = CType(ctl, TextBox).Text
conexion.Close()
Else
Label2.Text = "no rula"
End If
Next ctl
----------------------------------------------------------------------------------------------------
Hay que decir que el Pholder1 lo aloje en una tabla(table1), porque si no no puedes escoger su ubicacion. Lo que he sacado en conclusion de la falta de funcionamiento
es que nunca entra en el if, es decir ni inserta, ni activa el label2.text. Por lo que deduzco que el visual net no considera como controles, el contenido del
pholder1. He aqui mi dilema, si no son controles que son, en mi desesperacion he probado con objects, pero tampoco. Otra cosa que he probado ha sido ha realizar
la busqueda en le form1 en vez de en el pholder1(linea 1), y de esa manera si que me realiza una insercion por cada uno de los textboxs existentes en la página.
Pero lo que yo necesito es sacar la información de los textboxs dinamicos...!Alguna ayudita...!
(*)Todo el código esta realizado en aspx.vb (codigo subyacente).

2.-El 2º problema deriva del primero, otra persona me dió un código que funciona y arregla el problema 1.-, lo único malo es que no es con codigo subyacente(vb)
He encontrado numerosos problemas para compatibilzar codigo asp introducido en el (html) con el mio que previamente habia realizado en el (.vb), por eso al final he optado
por intentar meter en un control de usuario(ascx) el procedimento html, al final lo he conseguido. Mi problema ahora radica en que una vez invocado mi UserControl llamado
"telefonos" no me da ninguna facilidad de integración con el resto de mi código. Yo tengo un Page_load en el vb que funciona a las mil maravillas y que oculta unos controles
, muestra otros, etc,etc. Sin embargo ahora no soy capaz de interactuar con el control importado(obviamente lo puedo hacer en el html con<%%>), pero quiero hacerlo en el vb.

#Problema 2a.-¿Que pasa si teniendo u page_load en el vb, yo agrego nuevas directivas en el page_load del html (A mi en principio el del html, no me ha hecho ni caso).¿Se realizan
ambos page_loads?, ¿Prevalece uno?

#Problema 2b.-¿Como llamo al user control del vb para poder realizar funciones, con el? Con su nombre(id) que es "telefonos", no hace nada. Ante una directiva del tipo "telefonos.visible"
por ejemplo, dice que no reconoce telefonos, si lo dimensiono como "usercontrol" en el vb, sigue sin saber que elemento del formulario es. Supongo que es necesario hacer un recorrido de controles
para identifcarlo dentro del formulario. Imagino muchas cosas...

3.-Lo estoy madurando, en breve ya lo comunicare.