78 messaggi dal 19 marzo 2003
Salve a tutti, ho la seguente sub che si occupa di crearmi dinamicamente una tabella con delle textbox runat=server:

    Private Sub CreateDynamicTable()

        Dim tblRows As Integer = 64
        Dim tblCols As Integer = 8
        Dim intRQS As Integer = 1

        Dim startRow As Integer = ((64 * intRQS) - 64)
        Dim tbl As Table = New Table()
        tbl.ID = "tblMain"
        tbl.Attributes.Add("runat", "server")
        PlaceHolder1.Controls.Add(tbl)

        For i As Integer = startRow To (startRow + tblRows - 1)

            Dim tr As TableRow = New TableRow()

            For j As Integer = 0 To tblCols - 1

                Dim tc As TableCell = New TableCell()
                Dim txtBox As TextBox = New TextBox()

                If (j Mod 2) = 0 Then
                    txtBox.Width = "80"
                    txtBox.Text = "10.14.1." & (i + (64 * (j / 2)))
                    txtBox.ID = "IP_" & (i + (64 * (j / 2)))
                    txtBox.BackColor = Drawing.Color.AntiqueWhite
                Else
                    txtBox.Width = "150"
                    txtBox.Text = "Desc. no. " & (i + (64 * (j / 2)))
                    txtBox.ID = "DS_" & (i + (64 * ((j - 1) / 2)))
                    txtBox.BackColor = Drawing.Color.Beige

                End If

                txtBox.Attributes.Add("runat", "server")
                txtBox.AutoPostBack = False
                txtBox.ReadOnly = True
                tc.Controls.Add(txtBox)
                tr.Cells.Add(tc)

            Next j

            tbl.Rows.Add(tr)

        Next i

        tbl.BorderStyle = BorderStyle.Solid
        tbl.BorderColor = Drawing.Color.Black
        tbl.BorderWidth = "1"

    End Sub


Ovunque io lanci la sub, sia in init, che in preload o dove altro, se poi tento tramite un button ad esempio (o in qualsiasi altro modo) di riferirmi ad una textbox così creata (es: "IP_3.text") mi dice che il controllo non esiste. Sapete dirmi dove sbaglio?

FYI, il placeholder1 sta in un form creato a mano (formQ) che é runat=server.

Per farvi capire un po' meglio l'output che da il codice vi mostro uno spezzone della tabella (tutta era troppo grande).

http://img228.imageshack.us/img228/6780/tblip.jpg

Vi ringrazio per un aiuto.
Luca

____
Ciao :)
devi ricreare i controlli ad ogni postback, il loro stato è poi ricreato utilizzando il ViewState

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
78 messaggi dal 19 marzo 2003
Non penso mi servirà il postback... ma ora vedo, devo ancora andare avanti a progettare quello che mi serve... ero fermo a sto punto.

Ad ogni modo sono riuscito a fare quel che volevo... per i posteri la funzione magica da usare é il "TryCast".

        Dim j As TextBox = TryCast(Me.tbl.FindControl("ip_43"), TextBox)
        If j IsNot Nothing Then
            j.text = "ciaomondo"
        End If


Saludos!!!

____
Ciao :)
non è che serve il PostBack, serve ricreare i controlli.

se riesci a recuperare i controlli creati dinamicamente già richiami CreateDynamicTable() ad ogni Postback

e quindi il problema era un altro

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
78 messaggi dal 19 marzo 2003
nostromo ha scritto:
non è che serve il PostBack, serve ricreare i controlli.

se riesci a recuperare i controlli creati dinamicamente già richiami CreateDynamicTable() ad ogni Postback

e quindi il problema era un altro


In fase di test andavo a lanciare DynamicTable in init e subito di seguito, sempre in init, modificavo un textbox.text ... all'inizio non andava... sbagliavo il modo di puntare alla textbox, non ci arrivavo neanche al postback.
Mettendo la modifica della textbox all'interno di un bottone allora si, si presenta il problema del postback.

____
Ciao :)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.