Sdílet prostřednictvím


Gewusst wie: Programmgesteuertes Hinzufügen von Steuerelementen zu einer ASP.NET-Webseite

Aktualisiert: November 2007

Manchmal ist es praktischer, ein Steuerelement erst zur Laufzeit und nicht bereits zur Entwurfszeit zu erstellen. Dies ist z. B. bei einer Seite für Suchergebnisse der Fall, auf der die Ergebnisse in einer Tabelle angezeigt werden sollen. Da Sie nicht wissen, wie viele Einträge zurückgegeben werden, soll für jeden zurückgegebenen Eintrag eine Tabellenzeile dynamisch generiert werden.

kyt0fzt1.alert_note(de-de,VS.90).gifHinweis:

Vorhandene Steuerelemente können oft die Funktionen bereitstellen, die aus der dynamischen Erstellung von Steuerelementen resultieren. Beispielsweise können Steuerelemente wie das Repeater-Steuerelement, das DataList-Steuerelement und das RadioButtonList-Steuerelement Zeilen oder andere Elemente von Steuerelementen dynamisch erstellen, wenn die Seite ausgeführt wird.

Um ein Steuerelement programmgesteuert zu einer Seite hinzufügen zu können, muss ein Container für das neue Steuerelement vorhanden sein. Wenn Sie z. B. Tabellenzeilen erstellen, dient die Tabelle als Container. Wenn kein Steuerelement vorhanden ist, das eindeutig als Container fungiert, können Sie ein PlaceHolder-Webserversteuerelement oder ein Panel-Webserversteuerelement verwenden.

In manchen Fällen müssen Sie statischen Text und Steuerelemente erstellen. Zum Erstellen von statischem Text können Sie entweder ein Literal-Webserversteuerelement oder ein Label-Webserversteuerelement verwenden. Sie können diese Steuerelemente anschließend wie jedes andere Steuerelement zum Container hinzufügen. Weitere Information zum Ansichtszustand von zur Laufzeit erstellten Steuerelementen finden Sie unter Dynamische Webserversteuerelemente und der Ansichtszustand.

kyt0fzt1.alert_caution(de-de,VS.90).gifWichtiger Hinweis:

So fügen Sie einer ASP.NET-Webseite programmgesteuert ein Steuerelement zu

  1. Erstellen Sie eine Instanz des Steuerelements, und legen Sie deren Eigenschaften fest. Verfahren Sie wie im folgenden Beispiel:

    Dim myLabel As New Label()
    myLabel.Text = "Sample Label"
    
    Label myLabel = new Label();
    myLabel.Text = "Sample Label";
    
    kyt0fzt1.alert_note(de-de,VS.90).gifHinweis:

    Steuerelemente werden in der Regel beim Initialisieren der Seite zur Seite hinzugefügt. Ausführliche Informationen finden Sie unter Übersicht über den Lebenszyklus von ASP.NET-Seiten.

  2. Fügen Sie das neue Steuerelement der Controls-Auflistung eines Containers hinzu, der bereits auf der Seite enthalten ist, wie im folgenden Beispiel gezeigt:

    Dim Panel1 As New Panel()
    Panel1.Controls.Add(myLabel)
    
    Panel Panel1= new Panel();
    Panel1.Controls.Add(myLabel);
    
    kyt0fzt1.alert_note(de-de,VS.90).gifHinweis:

    Weil die Controls-Eigenschaft eine Auflistung ist, können Sie das neue Steuerelement mit der AddAt-Methode an einer bestimmten Position platzieren – z. B. vor andere Steuerelemente. Dies kann jedoch zu Fehlern in der Seite führen. Ausführliche Informationen finden Sie unter Dynamische Webserversteuerelemente und der Ansichtszustand.

    Das folgende Codebeispiel zeigt den Ereignishandler für das SelectedIndexChanged-Ereignis eines Steuerelements mit dem Namen DropDownList1. Der Handler erstellt die vom Benutzer in der Dropdownliste ausgewählte Anzahl von Label-Steuerelementen. Der Container für die Steuerelemente ist ein PlaceHolder-Webserversteuerelement mit dem Namen Placeholder1.

    kyt0fzt1.alert_security(de-de,VS.90).gifSicherheitshinweis:

    Benutzereingaben auf einer Webseite können möglicherweise schädliche Clientskripts enthalten. Standardmäßig stellt die ASP.NET-Seite sicher, dass die Benutzereingabe keine Skript- oder HTML-Elemente enthält. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

    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 />"));
     } 
    }
    

Siehe auch

Aufgaben

Gewusst wie: Programmgesteuertes Festlegen der Eigenschaften von HTML-Serversteuerelementen

Gewusst wie: Programmgesteuertes Festlegen von Formateigenschaften für ASP.NET-Serversteuerelemente

Konzepte

Ereignismodell für ASP.NET-Webserversteuerelemente

Weitere Ressourcen

Programmgesteuertes Festlegen der Eigenschaften von ASP.NET-Serversteuerelementen