Leggere controlli in una tabella

martedì 26 settembre 2006 - 17.54

Gemini Profilo | Expert

Ciao a tutti
ho inserito da codice in una cella di una tabella una label:

Label lbBooking = new Label(); lbBooking.ID = "lbBookingCode" + cont.ToString(); lbBooking.Text = myReadDett["bookingcode"].ToString(); TableCell tempCellBook = new TableCell(); tempCellBook.Controls.Add(lbBooking); tempCellBook.Width = 152; tempCellBook.CssClass ="titolo"; tempRow1.Cells.Add(tempCellBook); tbPrenotazione.Rows.Add(tempRowDett);


qunado clicco su un tasto salva vado a leggere il contenuto della label:

Label lbBookingcode = (Label)tbPrenotazione.FindControl(bookingcode);


Quando provo a leggere il valore della label ricevo:

Riferimento a un oggetto non impostato su un'istanza di oggetto.

Perchè?
Ma è possibile leggere i controlli inseriti da codice?

Ho provato anche in questo modo:
Control ControlTitolo;
ControlTitolo = Page.FindControl(bookingcode);
Response.Write(((System.Web.UI.WebControls.Label)ControlTitolo).Text);

Grazie mille

0v3rCl0ck Profilo | Guru

>Ciao a tutti
>ho inserito da codice in una cella di una tabella una label:
>
>
>Label lbBooking = new Label();
>lbBooking.ID = "lbBookingCode" + cont.ToString();
>lbBooking.Text = myReadDett["bookingcode"].ToString();
>TableCell tempCellBook = new TableCell();
>tempCellBook.Controls.Add(lbBooking);
>tempCellBook.Width = 152;
>tempCellBook.CssClass ="titolo";
>tempRow1.Cells.Add(tempCellBook);
>tbPrenotazione.Rows.Add(tempRowDett);
>
>
>qunado clicco su un tasto salva vado a leggere il contenuto della
>label:
>
>
>Label lbBookingcode = (Label)tbPrenotazione.FindControl(bookingcode);

un paio di chiarimenti: bookingcode ke tipo di variabile è? e cosa c'è dentro?

ma cmq tieni a mente che il findcontrol non è ricorsivo, quindi se lo lanci sulla Page non è possibile ke ti riesca a trovare quella label, ti passo la funzione per cercare i controlli in maniera ricorsiva, ma usala parsimoniamente, appunto xchè è ricorsiva e con tanti controlli non è di certo performante:

private Control FindControlRecursive(Control root, string id) { if (root.ID == id) { return root; } foreach (Control c in root.Controls) { Control t = FindControlRecursive(c, id); if (t != null) { return t; } } return null; }


questa è quella ke trova solo un oggetto con l'id specificato, con poche modifiche puoi trasformarla in maniera ke ti torni una collezione di controlli


enjoy it
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5