Procedura: aggiungere controlli a una pagina Web ASP.NET a livello di codice
Aggiornamento: novembre 2007
Vi sono casi in cui è più pratico creare un controllo in fase di esecuzione che in fase di programmazione. Basti pensare a una pagina contenente i risultati di una ricerca, nella quale si desidera che tali risultati vengano visualizzati in una tabella. Poiché non si conosce il numero di elementi che verranno restituiti, si desidera generare in maniera dinamica una riga di tabella per ogni elemento restituito.
Nota: |
---|
I controlli esistenti possono spesso fornire la funzionalità che si ottiene in seguito alla creazione dinamica dei controlli. Controlli quali Repeater, DataList e RadioButtonList consentono di creare dinamicamente righe o altri elementi di controllo durante l'esecuzione della pagina. |
Per poter aggiungere in fase di programmazione un controllo a una pagina, deve esistere un contenitore per il nuovo controllo. Se ad esempio si stanno creando le righe di una tabella, il contenitore sarà la tabella. Se non è disponibile alcun controllo con funzioni di contenitore, è possibile utilizzare un controllo server Web PlaceHolder o Panel.
In alcuni casi, potrebbe essere necessario creare sia il testo statico sia i controlli. Per creare il testo statico, è possibile utilizzare un controllo server Web Literal o Label. È possibile aggiungere questi controlli al contenitore come per qualsiasi altro controllo. Per informazioni sullo stato di visualizzazione nei controlli creati in fase di esecuzione, vedere Controlli server Web dinamici e stato di visualizzazione.
Nota importante: |
---|
Per aggiungere un controllo a una pagina Web ASP.NET a livello di codice
Creare un'istanza del controllo e impostarne le proprietà, come illustrato nell'esempio riportato di seguito:
Dim myLabel As New Label() myLabel.Text = "Sample Label"
Label myLabel = new Label(); myLabel.Text = "Sample Label";
Nota: I controlli vengono generalmente aggiunti alla pagina durante la fase di inizializzazione di quest'ultima. Per informazioni dettagliate sulle fasi di una pagina, vedere Cenni preliminari sul ciclo di vita di una pagina ASP.NET.
Aggiungere il nuovo controllo all'insieme Controls di un contenitore già presente nella pagina, come illustrato nell'esempio riportato di seguito:
Dim Panel1 As New Panel() Panel1.Controls.Add(myLabel)
Panel Panel1= new Panel(); Panel1.Controls.Add(myLabel);
Nota: Poiché la proprietà Controls è un insieme, è possibile utilizzare il metodo AddAt per inserire il nuovo controllo in una posizione specifica, ad esempio prima di altri controlli. Tale operazione può tuttavia comportare la presenza di errori nella pagina. Per informazioni dettagliate, vedere Controlli server Web dinamici e stato di visualizzazione.
Nell'esempio di codice riportato di seguito viene illustrato il gestore eventi dell'evento SelectedIndexChanged di un controllo denominato DropDownList1. Il gestore crea il numero di controlli Label selezionato dall'utente dalla casella di riepilogo a discesa. Il contenitore dei controlli è un controllo server Web PlaceHolder denominato Placeholder1.
Nota sulla sicurezza: L'input dell'utente in una pagina Web può includere script client potenzialmente dannoso. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per ulteriori informazioni, vedere Cenni preliminari sugli attacchi tramite script.
Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged Dim DropDownList1 As New DropDownList() Dim PlaceHolder1 As New PlaceHolder() Dim i As Integer Dim numlabels As Integer ' Get the number of labels to create. numlabels = CInt(DropDownList1.SelectedItem.Text) For i = 1 To numlabels Dim myLabel As Label = New Label() ' Set the label's Text and ID properties. myLabel.Text = "Label " & i myLabel.ID = "Label" & i PlaceHolder1.Controls.Add(myLabel) ' Add a spacer in the form of an HTML <br /> element Dim spacer As LiteralControl = New LiteralControl("<br />") PlaceHolder1.Controls.Add(spacer) Next End Sub
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e) { DropDownList DropDownList1 = new DropDownList(); PlaceHolder PlaceHolder1 = new PlaceHolder(); // Get the number of labels to create. int numlabels = System.Convert.ToInt32(DropDownList1.SelectedItem.Text); for (int i=1; i<=numlabels; i++) { Label myLabel = new Label(); // Set the label's Text and ID properties. myLabel.Text = "Label" + i.ToString(); myLabel.ID = "Label" + i.ToString(); PlaceHolder1.Controls.Add(myLabel); // Add a spacer in the form of an HTML <br /> element. PlaceHolder1.Controls.Add(new LiteralControl("<br />")); } }
Vedere anche
Attività
Procedura: impostare le proprietà dei controlli server HTML a livello di codice
Procedura: impostare le proprietà di stile dei controlli server ASP.NET a livello di codice
Concetti
Modello di eventi dei controlli server Web ASP.NET
Altre risorse
Impostazione delle proprietà dei controlli server ASP.NET a livello di codice