Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Problema - Lettura Input Box dinamiche
mercoledì 28 maggio 2008 - 10.31
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
kduhcm
Profilo
| Junior Member
191
messaggi | Data Invio:
mer 28 mag 2008 - 10:31
Ciao ragazzi,
Dovrei creare delli input box html dinamicamente e poi leggerne il valore, ma non so come fare per leggere il valore successivamente.
Nel Page Load aggiungo il controllo alla pagina
if (!IsPostBack)
{
string htmlCarrello = "<input id='txtQuantita1' runat='server' type='text' value='111' />";
divInput.InnerHtml = htmlCarrello;
}
e successivamente, nell'evento click di un pulsante cerco di leggerlo
HtmlInputText t1 = (HtmlInputText)divInput.FindControl("txtQuantita1");
ma non funziona in quanto non mi trova il controllo (t1 risulta sempre null)
Il metodo FindControl funziona solo se l'input box e' stata precedentemente inserita nella pagina a design-time
Come posso fare? Suggerimenti?
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
mer 28 mag 2008 - 10:49
Non puoi creare controlli dinamici in quel modo. Viene renderizzato perchè è un controllo html, ma il server non si accorge della sua presenza.
Ti consiglio di dare un'occhiata ai post che sono già stati scritti in proposito:
http://www.dotnethell.it/Search.aspx?Search=controlli%20dinamici&type=4
In ogni caso sconsiglio sempre di creare i controlli dinamicamente: almeno di non avere molta voglia (e tempo) di imparare e sperimentare cose nuove (non sempre è possibile farlo in ambito lavorativo) o di non avere approfondite conoscienze tecniche sull'uso di asp.net.
Se non rientri in queste due categorie cerca un workaround ad esempio crea una normale textbox e setta la proprietà visible a false (non viene postato sul client, ma esiste lato server come controllo). Quando devi mostrare il controllo puoi tranquillamente fare TexBox1.Visible = true. Otterrai lo stesso effetto con molta meno fatica.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
kduhcm
Profilo
| Junior Member
191
messaggi | Data Invio:
mer 28 mag 2008 - 11:32
Purtroppo devo fare un carrello della spesa e devo attenermi alla grafica gia fatta. Se faccio le textbox fisse mi incasino con la grafica poi...
Dimmi solo una cosa wamba... se renderizzo le righe come semplici input box, c'e un modo per leggerle tipo con un request. form o altro?
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
mer 28 mag 2008 - 11:51
Prova a guardare questo, anche se si tratta di un postback su la stessa pagina sono sicuro che riuscirai ad adattare il codice:
http://blogs.ugidotnet.org/WamBlog/archive/2008/05/24/passare-dati-fra-webform.aspx
Comunque a livello HTML/CSS non esiste differenza fra non creare un controllo server e settare la proprietà visible a false, dato che il tag <input type="text"> non viene creato (provare per credere).
PS - Nota Disambigua: Stò parlando della proprietà Visible di un tag server <asp:textbox> non della proprietà del css.
http://msdn.microsoft.com/en-us/library/system.web.ui.control.visible.aspx
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
kduhcm
Profilo
| Junior Member
191
messaggi | Data Invio:
mer 28 mag 2008 - 16:58
ho trovato la soluzione:
protected void Page_Load(object sender, EventArgs e)
{
TextBox TextBox1 = new TextBox();
TextBox1.ID = "TextBox1";
TextBox TextBox2 = new TextBox();
TextBox2.ID = "TextBox2";
HtmlGenericControl BrControl = new HtmlGenericControl();
BrControl.InnerHtml = "<br />";
ControlPlaceHolder.Controls.Add(TextBox1);
ControlPlaceHolder.Controls.Add(BrControl);
ControlPlaceHolder.Controls.Add(TextBox2);
}
protected void btn_PostBack_Click(object sender, EventArgs e)
{
lblTextBox.Text = string.Empty;
foreach (Control control in ControlPlaceHolder.Controls)
{
if (control is TextBox)
{
TextBox textbox = (TextBox)control;
lblTextBox.Text += textbox.ID + ": " + textbox.Text + "<br />";
}
}
}
Torna su
Stanze Forum
Elenco Threads
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 !