Ricavare valore di una Textbox creata in runtime

mercoledì 29 ottobre 2008 - 11.11

bandosbando Profilo | Newbie

Ciao a tutti,
È il mio primo post (ma non penso gliene freghi qualcosa a qualcuno)…sto provando a fare una pagina in VB ASP.NET
in cui sono presenti una lista di textbox e vorrei che, una volta premuto un tasto mi stampi tutti i valori contenuti
in queste textbox, più precisamente:

tramite la funzione InizializzaTable1, genero una table (in runtime) contentente una label e una textbox
per ogni riga che viene creata..
Vorrei che l'evento Button1_Click stampi tutti i valori che vengono inseriti nelle textbox,
il problema è che avendo creato queste textbox con un ciclo in un altro metodo (InizializzaTable1
mi da ovviamente errore dicendomi

Name 'TxtProva(j)' is not declared.

Devo accederci tramite le proprietà della Table1 che ho creato? es. Table1.Rows....TxtProva(j)
Oppure dichiarare questo array di textbox a livello globale?

Premetto che è quasi un anno che faccio help desk ed è da poco che ho ripreso a programmare,
si accettano insulti se necessario

Wamba Profilo | Expert

Ciao e benvenuto nel forum,
Affrontare la creazione di controlli dinamici "manualmente" non sempre è una questione semplice e richiede competenze un po' avanzate.
Le soluzioni alternative possono essere diverse, ad esempio l'uso di un repeater per creare i textbox.
Dicci che strada vuoi seguire e cercheremo di aiutarti.

-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

bandosbando Profilo | Newbie

Grazie per la risposta rapida

Ho provato a creare la tabella con i controlli in questo modo

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ho provato ad eseguire un ciclo che in Button1_Click mi faccia una response.write(request.form(Textbox) così

for i as Integer = 0 to NumerodiTextbox response.write(request.form("TxtProva" & i) next

per andare va..ma è corretta come procedura? Di solito era la procedura che utilizzavo in ASP classico (usare il request.form, request.querystring..), ma so che ASP.NET è giusto un pò diverso!.. non vorrei dia dei problemi
Tutti abbiamo un talento, c'è chi ha il talento di non saper fare un caz

synthesis Profilo | Newbie

Anche io ho lo stesso problema...
Carico a run-time delle textbox dentro ad una tabella runat server.
Ma nel metodo dell'evento click del bottone che fa la post, la tabella torna ad avere Rows.Count =0!!
E nonostante il carimento runtime lo abbia fatto nel PreRender, quindi ben dopo la gestione dell'evento click.
Sinceramente mi aspettavo che il ViewState mi permettesse di leggere la TableRow nel suo stato prima della Post, ma non è così. Va forse attivato l'EnebleViewState per la tabella?
Sono riuscito a recuperare i valori tramite gli indici passati alla Request.Form[index], ma gli indici cambiano ogni volta che aggiungo nuovi elementi, e questo comporterebbe uno sfasamento di associazione indici con valori del form.

C'è una soluzione pulita e che funziona??

kontax Profilo | Junior Member

@synthesis
Non so se ho capito bene il problema, però potresti dare un' occhiata a questo controllo http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx
E' utile per i controlli generati a runtime, perchè te li mantiene fra i vari postback.
Per il resto, ti sconsiglio di usare controlli generati dinamicamente a meno che non sia proprio necessario..ciaoo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5