Quando si sviluppano pagine complesse può capitare di dover creare controlli in modo programmatico e dovergli associare un ID univoco. Per toglierci il pensiero di dover creare una nostra numerazione o calcolare un ID univoco, possiamo sfruttare la tabella del .NET Framework.
Nei controlli ASP.NET sono presenti tre proprietà simili, della quale è bene conoscere la differenza:
- ID: nome univoco del controllo rispetto al contenitore, opzionale;
- UniqueID: nome univoco del controllo rispetto all'intero grafo di controlli. Ogni livello di contenitore è concatenato dai due punti;
- ClientID: nome univoco uguale a UniqueID, ma separato da $ invece dei due punti. Viene usato come attributo ID sul tag html renderizzato
Per contenitore si intendono tutti quei controlli che implementano l'interfaccia INamingContainer, come Page, UserControl, DataGrid, DataList, Repeater, CheckBoxList.
UniqueID viene usato per quei controlli che necessitano di un PostBack lato server e la sua particolarità sta nel fatto che se l'ID non è specificato, verrà assegnato in automatico in funzione della posizione in cui si trova.
Con lo script di oggi vedremo il caso più tipico, quando vanno associati ai validatori i rispettivi ID delle TextBox da controllare.
<script runat="server" language="C#">
void Page_Load()
{
for (int x = 0; x < 5; x++)
{
// Creo la TextBox
TextBox tb = new TextBox();
// Imposto l'ID a null
tb.ID = null;
// Chiamo senza usare il valore la proprietà UniqueID
string uID = tb.UniqueID;
// Aggiungo la TextBox ai controlli della form
form1.Controls.Add(tb);
// Creo il validatore
RequiredFieldValidator val = new RequiredFieldValidator();
// Imposto il messaggio di errore e l'ID della TextBox
val.ErrorMessage = "Errore";
val.ControlToValidate = tb.ID;
// Aggiungo il validatore ai controlli della form
form1.Controls.Add(val);
form1.Controls.Add(new LiteralControl("<br/>"));
}
}
</script>
<form runat="server" id="form1">
<p><asp:Button runat="server" Text="Salva" /></p>
</form>E' importante notare l'assegnazione di null alla proprietà ID, poiché imposta un flag che sarà poi necessario per reperire l'ID autogenerato dalla proprietà UniqueID.
Si tratta di un workaround, funzionante con la versione 1.x del .NET Framework, di cui non è assicurato il funzionamento con le future versioni.
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.








Stampa
Snippet
Download 



