Sdílet prostřednictvím


Entwickeln von benutzerdefinierten datengebundenen Webserversteuerelementen für ASP.NET 2.0

Aktualisiert: November 2007

Datengebundene ASP.NET-Webserversteuerelemente verfügen über eine Benutzeroberfläche für eine Datenquelle, die eine Auflistung von Datensätzen oder Elementen darstellt. Beispiele für datengebundene Webserversteuerelemente sind die Serversteuerelemente Übersicht über das GridView-Webserversteuerelement, Übersicht über das DataList-Webserversteuerelement und Übersicht über das Repeater-Webserversteuerelement. Weitere Informationen über datengebundene ASP.NET-Steuerelemente finden Sie unter Übersicht über datengebundene ASP.NET-Webserversteuerelemente.

ASP.NET, Version 2.0, verfügt über ein neues Datenquellenmodell, das es Ihnen ermöglicht, datengebundene Steuerelemente an Datenquellensteuerelemente zu binden und so häufige Datenvorgänge wie Paging, Sortieren und Löschen aus dem datengebundenen Steuerelement zu verschieben. Dieses Modell bietet Seitenentwicklern ein flexibleres datengebundenes Steuerelement und bessere Wiederverwendungsmöglichkeiten.

Dieses Thema enthält eine Einführung in die Schritte, die erforderlich sind, um ein benutzerdefiniertes datengebundenes ASP.NET 2.0-Serversteuerelement zu implementieren. Weitere Informationen über die allgemeine Architektur und Implementierung von benutzerdefinierten Steuerelementen finden Sie unter Entwickeln von benutzerdefinierten ASP.NET-Serversteuerelementen und Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Serversteuerelements. Weitere Informationen über die Entwicklung von datengebundenen Steuerelementen, die mit ASP.NET 1.1 kompatibel sind, finden Sie unter Entwickeln von benutzerdefinierten datengebundenen Webserversteuerelementen für ASP.NET 1.1 und Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten datengebundenen ASP.NET-Websteuerelements für ASP.NET 1.1. Weitere Informationen zu Datenquellensteuerelementen finden Sie unter Übersicht über Datenquellensteuerelemente.

Gründe für die Erstellung eines benutzerdefinierten datengebundenen Steuerelements

Bevor Sie benutzerdefinierte datengebundene Steuerelemente erstellen, sollten Sie die Funktionen der mit ASP.NET bereitgestellten datengebundenen Steuerelemente überprüfen. Möglicherweise gibt es bereits ein Steuerelement, das Ihre Anforderungen erfüllt oder das über viele der gewünschten Features verfügt, sodass Sie es lediglich erweitern brauchen. Weitere Informationen über datengebundene ASP.NET-Steuerelemente finden Sie unter Übersicht über datengebundene ASP.NET-Webserversteuerelemente.

Nachfolgend finden Sie einige Gründe, die für die Erstellung eines benutzerdefinierten datengebundenen Steuerelements sprechen:

  • Ihre besonderen Anforderungen verlangen eine benutzerdefinierte Oberfläche und benutzerdefinierte Features zum Sortieren oder Bearbeiten von Daten, über die vorhandene datengebundene Steuerelemente nicht verfügen.

  • Sie möchten ein benutzerdefiniertes datengebundenes Steuerelement erstellen, das vorkompiliert und verteilbar ist.

  • Sie möchten die Features eines datengebundenen Steuerelements erweitern, das bereits mit ASP.NET bereitgestellt wird.

  • Sie möchten ein datengebundenes Steuerelement mit einem benutzerdefinierten Designer erstellen, der Ihre besonderen Anforderungen erfüllt.

Grundlegende Funktionalität eines benutzerdefinierten datengebundenen Steuerelements

Durch Ableiten von einer der Basisklassen des datengebundenen Steuerelements, wie der DataBoundControl-Klasse oder der CompositeDataBoundControl-Klasse, erbt das benutzerdefinierte datengebundene Steuerelement automatisch viele integrierte Features, z. B. folgende:

  • Datenquellenunterstützung für die IDataSource-Schnittstelle und ihre DataSourceView-Klasse, die benannte Ansichten von Daten, die Möglichkeit zum Abfragen der von der Datenquelle unterstützten Vorgänge und bedarfsabhängiges Laden von Daten bereitstellt.

  • Datenquellenunterstützung für die generische IEnumerable-Schnittstelle oder IListSource-Schnittstelle.

  • Unterstützung für Datenbindungsausdrücke, die es Seitenentwicklern ermöglicht, Bindungen zwischen einer verfügbar gemachten, speziell gekennzeichneten Eigenschaft des Steuerelements und einer Datenquelle zu erstellen. Weitere Informationen über Datenbindungsausdrücke finden Sie unter Übersicht über Datenbindungsausdrücke.

  • Unterstützung für automatische Datenbindung, die die Datenbindungslogik nicht bei jedem Postback, sondern so spät wie möglich im Seitenlebenszyklus und nur bei Bedarf aufruft. Nachdem eine Seite die erste Datenbindungsanforderung ausgeführt hat, versuchen nachfolgende Anforderungen, die Daten aus dem Ansichtszustand abzurufen. Auf diese Weise wird die Leistung verbessert, da nicht für jede Anforderung eine erneute Verbindung zur Datenquelle hergestellt werden muss.

Verwenden von verfügbaren Entwurfszeitfeatures

Alle Webserversteuerelemente verfügen über Entwurfszeitfeatures, die möglicherweise auch für benutzerdefinierte datengebundene Steuerelemente infrage kommen. Beispielsweise können Sie eine Designerklasse und Vorlagen für das benutzerdefinierte Steuerelement erstellen. Diese Features werden aufgerufen, wenn das Steuerelement zur Entwurfszeit auf einer visuellen Entwurfsoberfläche wie der Entwurfsansicht in Visual Studio verwendet wird.

Durch das Erstellen eines Steuerelement-Designers können Seitenentwickler das benutzerdefinierte Steuerelement zur Entwurfszeit deutlich effizienter nutzen, da die Steuerelementeigenschaften über eine Entwurfszeitoberfläche angepasst werden können. Eine Übersicht über die ASP.NET-Steuerelement-Designer finden Sie unter Übersicht über ASP.NET-Steuerelement-Designer. Beispiele zu diesem Thema finden Sie unter HierarchicalDataBoundControlDesigner und Exemplarische Vorgehensweise: Erstellen eines einfachen Steuerelement-Designers für ein Webserver-Steuerelement.

Die Erstellung eines Steuerelements mit Vorlagen verschafft Seitenentwicklern die Flexibilität, die Steuerelemente und das Markup zur Definition der Benutzeroberfläche des Steuerelements anzugeben. Ein Beispiel für ein benutzerdefiniertes Steuerelement mit Vorlagen finden Sie unter Beispiel für ein vorlagenbasiertes Serversteuerelement.

Implementieren eines benutzerdefinierten datengebundenen Steuerelements in ASP.NET 2.0

Die folgende Tabelle enthält eine Zusammenfassung der Implementierungsschritte für ein benutzerdefiniertes datengebundenes Serversteuerelement in ASP.NET 2.0. Nach der Tabelle finden Sie ausführlichere Informationen über die jeweiligen Implementierungsschritte.

Schritt

Schrittzusammenfassung

Wählen Sie eine Basisklasse für das datengebundene Steuerelement aus.

Erweitern Sie eine vorhandene datengebundene Steuerelementklasse, die bereits über viele der gewünschten Features verfügt, oder leiten Sie von einer der Basisklassen des datengebundenen Steuerelements ab.

Machen Sie Datenbindungseigenschaften verfügbar.

Konfigurieren Sie das benutzerdefinierte Steuerelement, indem Sie zusätzlich zu den mindestens erforderlichen Datenbindungseigenschaften, die von Basisklassen des datengebundenen Steuerelements verfügbar gemacht werden, weitere Datenbindungseigenschaften verfügbar machen.

Initiieren Sie den Datenabruf.

  • Rufen Sie die Daten, die der Seitenentwickler dem Steuerelement zugewiesen hat, wie folgt ab:

  • Überschreiben Sie die PerformSelect-Methode der Basisklasse des datengebundenen Steuerelements.

  • Rufen Sie die GetData-Methode der Basisklasse des datengebundenen Steuerelements auf, um die Datenquellenansicht des Steuerelements abzurufen.

  • Rufen Sie die Select-Methode des DataSourceView-Objekts auf, um den Datenabruf zu initiieren, und geben Sie die Rückrufmethode für den Empfang der Daten an.

Behandeln Sie die abgerufenen Daten.

Stellen Sie die Rückrufmethode bereit, die Sie als Parameter in der Select-Methode angegeben haben. Die Rückrufmethode muss über einen einzelnen Parameter vom Typ IEnumerable verfügen, um die Daten zu empfangen. Wenn das Steuerelement eine Verarbeitung der Daten erfordert, sollte sie innerhalb dieser Rückrufmethode erfolgen.

Erstellen Sie die Benutzeroberflächenobjekte zur Darstellung der Daten.

Stellen Sie eine Überschreibung der PerformDataBinding-Methode bereit. Sie müssen die folgenden Aufgaben innerhalb dieser Methode ausführen:

  • Rufen Sie die PerformDataBinding-Methode auf, um die Ausführung jedes Codes zuzulassen, der auf dieser Methode basiert.

  • Durchlaufen Sie die Datenauflistung, und erstellen Sie untergeordnete Steuerelemente zur Darstellung der Daten in der Benutzeroberflächenanzeige.

Auswählen einer Basisklasse für datengebundene Steuerelemente

Entwickler von Steuerelementen können eine der für datengebundene Steuerelemente verfügbaren Basisklassen erweitern, um ein benutzerdefiniertes datengebundenes Steuerelement zu erstellen. Die folgende Tabelle enthält eine Liste der datengebundenen Basisklassen, die in ASP.NET 2.0 verfügbar sind. Lesen Sie die Beschreibungen dieser Klassen, und bestimmen Sie anschließend, welche Basisklasse die Anforderungen des benutzerdefinierten datengebundenen Steuerelements am besten erfüllt. Ausführlichere Informationen über die Basisklassen für datengebundene Steuerelemente sowie Implementierungsbeispiele finden Sie in der Referenzdokumentation zu den jeweiligen Klassen. Weitere Informationen über datengebundene ASP.NET-Steuerelemente finden Sie unter Übersicht über datengebundene ASP.NET-Webserversteuerelemente.

Klasse

Beschreibung

BaseDataBoundControl

  • Dies ist die Basisklasse für alle datengebundenen Steuerelemente, die zur Datenbindung und Überprüfung gebundener Daten dient.

DataBoundControl

Dies ist die Basisklasse zum Erstellen standardmäßiger datengebundener Steuerelemente. DataBoundControl zeichnet sich wie folgt aus:

  • Stellt die grundlegende Implementierung für alle datengebundenen Steuerelemente bereit.

  • Enthält die Logik zur Kommunikation mit Datenquellensteuerelementen und Datencontainern.

  • Dient als Grundlage für datengebundene Steuerelemente, z. B. TreeView und ListControl.

ListControl

  • Dies ist die Basisklasse für Listensteuerelemente, die die DataBoundControl-Klasse erweitert. Sie stellt eine Items-Auflistung und erweiterte Funktionen für die Layoutwiedergabe bereit.

CompositeDataBoundControl

  • Dies ist die Basisklasse, die die DataBoundControl-Klasse erweitert und folgende Funktionen bereitstellt:

  • Implementiert den für zusammengesetzte Steuerelemente erforderlichen typischen Code, einschließlich des Codes, der nach einem Postback die Hierarchie der untergeordneten Steuerelemente anhand des Ansichtszustands wiederherstellt.

  • Bindet an eine IEnumerable-Datenquelle und listet die Daten auf, um eine Steuerelementstruktur zu erstellen.

  • Dient als Grundlage für datengebundene Steuerelemente, z. B. GridView und DetailsView.

HierarchicalDataBoundControl

  • Dies ist die Basisklasse für Steuerelemente, deren Daten in hierarchischer Form angezeigt werden. Sie dient als Grundlage für strukturbasierte datengebundene Steuerelemente, z. B. TreeView und Menu.

Verfügbare Datenbindungseigenschaften

Die Basisklassen des datengebundenen Steuerelements verfügen bereits über Datenbindungseigenschaften, die es einem Seitenentwickler ermöglichen, eine Datenquelle an ein Steuerelement zu binden. Dadurch bleibt dem Autor des Steuerelements zusätzliche Arbeit erspart. Durch Ableiten von DataBoundControl erbt ein benutzerdefiniertes Steuerelement beispielsweise drei verfügbar gemachte Datenbindungseigenschaften: DataSourceID, DataSource und DataMember. Anschließend kann der Seitenentwickler die Datenquelle angeben, an die das Steuerelement gebunden wird, indem er den Wert der DataSource-Eigenschaft oder DataSourceID-Eigenschaft festlegt.

Die DataSourceID-Eigenschaft ermöglicht es dem Seitenentwickler, die ID eines Steuerelements anzugeben, die der Datenquelle entspricht, aus der das datengebundene Steuerelement seine Daten abruft.

Mit der DataSource-Eigenschaft kann der Seitenentwickler ein datengebundenes Steuerelement direkt an Datenobjekte der beiden folgenden Typen binden:

  • Ein Objekt, das die IEnumerable-Schnittstelle implementiert (z. B. ein Array-, ArrayList- oder Hashtable-Objekt).

  • Ein Objekt, das die IListSource-Schnittstelle implementiert (z. B. ein DataSet-Objekt).

  • Zusätzliche Datenbindungseigenschaften wie die DataMember-Eigenschaft ermöglichen es dem Seitenentwickler, den Teil der Datenauflistung anzugeben, an den das Steuerelement gebunden werden soll.

  • Weitere Informationen über die von den Klassen oder Basisklassen datengebundener Steuerelemente verfügbar gemachten Datenbindungseigenschaften finden Sie in der Referenzdokumentation zu den jeweiligen Klassen.

Verfügbarmachen von benutzerdefinierten Datenbindungseigenschaften

Wenn Sie benutzerdefinierte Datenbindungseigenschaften in einem benutzerdefinierten Steuerelement verfügbar machen oder vorhandene Datenbindungseigenschaften überschreiben, sollten Sie die OnDataPropertyChanged-Methode aufrufen, falls das Steuerelement bereits initialisiert wurde. Dadurch wird das datengebundene Steuerelement gezwungen, die Daten erneut zu binden, um die neue Einstellung für die Datenbindungseigenschaft verwenden zu können.

Das folgende Codebeispiel zeigt eine Eigenschaft, die zu einer abgeleiteten datengebundenen Steuerelementklasse gehört. Es veranschaulicht, wie ein datengebundenes Steuerelement die OnDataPropertyChanged-Methode aufrufen kann, wenn eine Eigenschaft, die eine Datenquelle identifiziert, geändert wird, nachdem das datengebundene Steuerelement initialisiert wurde.

Inherits DataBoundControl

Public Property DataTextField() As String
    Get
        Dim o As Object = ViewState("DataTextField")
        If o Is Nothing Then
            Return String.Empty
        Else
            Return CStr(o)
        End If
    End Get
    Set(ByVal value As String)
        ViewState("DataTextField") = value
        If (Initialized) Then
            OnDataPropertyChanged()
        End If
    End Set
End Property
public class SimpleDataBoundColumn : DataBoundControl
{
    public string DataTextField
    {
        get
        {
            object o = ViewState["DataTextField"];
            return ((o == null) ? string.Empty : (string)o);
        }
        set
        {
            ViewState["DataTextField"] = value;
            if (Initialized)
            {
                OnDataPropertyChanged();
            }
        }
    }

Initiieren des Datenabrufs

Der Datenabruf wird innerhalb einer Überschreibung der PerformSelect-Methode initiiert, die von der Basisklasse des datengebundenen Steuerelements geerbt wird. Innerhalb dieser Überschreibung rufen Sie die Daten ab und geben eine Rückrufmethode zum Behandeln der zurückgegebenen Daten an.

Um die Daten abzurufen, führen Sie die folgenden Aufgaben in der überschriebenen PerformSelect-Methode aus:

  1. Stellen Sie fest, ob der Seitenentwickler die DataSource-Eigenschaft oder die DataSourceID-Eigenschaft verwendet hat, um die Daten festzulegen, die an das Steuerelement gebunden werden sollen. Überprüfen Sie dazu die IsBoundUsingDataSourceID-Eigenschaft. Beispielsweise weist die Einstellung false für die IsBoundUsingDataSourceID-Eigenschaft darauf hin, dass zum Festlegen der Datenquelle die DataSource-Eigenschaft verwendet wurde.

  2. Wenn der Seitenentwickler die DataSource-Eigenschaft festgelegt hat, ist ein zusätzlicher Schritt erforderlich: Rufen Sie die OnDataBinding-Methode auf.

  3. Rufen Sie die GetData-Methode auf, um das dem datengebundenen Steuerelement zugeordnete DataSourceView-Objekt abzurufen.

  4. Rufen Sie die Select-Methode des abgerufenen DataSourceView-Objekts auf, um den Datenabruf zu initiieren, und geben Sie die Rückrufmethode zum Behandeln der abgerufenen Daten an. Die Select-Methode funktioniert asynchron, sodass während des Datenabrufs weitere Verarbeitungen stattfinden können.

  5. Geben Sie die Beendigung der PerformSelect-Aufgaben an, indem Sie die RequiresDataBinding-Eigenschaft auf false festlegen und anschließend die MarkAsDataBound-Methode aufrufen.

  6. Lösen Sie das OnDataBound-Ereignis aus.

Das folgende Codebeispiel veranschaulicht die voranstehenden Aufgaben für den Datenabruf, die innerhalb einer Überschreibung der PerformSelect-Methode durchgeführt wurden.

Protected Overrides Sub PerformSelect()
    ' Call OnDataBinding here if bound to a data source using the
    ' DataSource property (instead of a DataSourceID), because the
    ' databinding statement is evaluated before the call to GetData.       
    If Not IsBoundUsingDataSourceID Then
        OnDataBinding(EventArgs.Empty)
    End If

    ' The GetData method retrieves the DataSourceView object from  
    ' the IDataSource associated with the data-bound control.            
    GetData().Select(CreateDataSourceSelectArguments(), _
        AddressOf OnDataSourceViewSelectCallback)

    ' The PerformDataBinding method has completed.
    RequiresDataBinding = False
    MarkAsDataBound()

    ' Raise the DataBound event.
    OnDataBound(EventArgs.Empty)

End Sub
protected override void PerformSelect()
{
    // Call OnDataBinding here if bound to a data source using the
    // DataSource property (instead of a DataSourceID), because the
    // databinding statement is evaluated before the call to GetData.       
    if (!IsBoundUsingDataSourceID)
    {
        this.OnDataBinding(EventArgs.Empty);
    }

    // The GetData method retrieves the DataSourceView object from  
    // the IDataSource associated with the data-bound control.            
    GetData().Select(CreateDataSourceSelectArguments(),
        this.OnDataSourceViewSelectCallback);

    // The PerformDataBinding method has completed.
    RequiresDataBinding = false;
    MarkAsDataBound();

    // Raise the DataBound event.
    OnDataBound(EventArgs.Empty);
}

Behandeln der abgerufenen Daten

Erstellen Sie eine Rückrufmethode, um die abgerufenen Daten zu akzeptieren. Dies ist die Rückrufmethode, die Sie angegeben haben, als die Select-Methode innerhalb der Überschreibung der PerformSelect-Methode aufgerufen wurde. Die Rückrufmethode muss über einen einzelnen Parameter vom Typ IEnumerable verfügen. In der Rückrufmethode können Sie die zurückgegebenen Daten beliebig verarbeiten, falls dies vom Steuerelement vorausgesetzt wird. Rufen Sie zuletzt die PerformDataBinding-Methode auf.

Das folgende Codebeispiel veranschaulicht eine Rückrufmethode, die über einen Parameter vom Typ IEnumerable verfügt und die PerformDataBinding-Methode aufruft.

Private Sub OnDataSourceViewSelectCallback(ByVal retrievedData As IEnumerable)
    ' Call OnDataBinding only if it has not already been 
    ' called in the PerformSelect method.
    If IsBoundUsingDataSourceID Then
        OnDataBinding(EventArgs.Empty)
    End If
    ' The PerformDataBinding method binds the data in the  
    ' retrievedData collection to elements of the data-bound control.
    PerformDataBinding(retrievedData)

End Sub
private void OnDataSourceViewSelectCallback(IEnumerable retrievedData)
{
    // Call OnDataBinding only if it has not already been 
    // called in the PerformSelect method.
    if (IsBoundUsingDataSourceID)
    {
        OnDataBinding(EventArgs.Empty);
    }
    // The PerformDataBinding method binds the data in the  
    // retrievedData collection to elements of the data-bound control.
    PerformDataBinding(retrievedData);
}

Erstellen der Benutzeroberflächenobjekte zur Darstellung der Daten

Innerhalb einer Überschreibung der PerformDataBinding-Methode erstellen Sie untergeordnete Steuerelemente zur Darstellung der Daten. Die Datenauflistung wird aufgelistet, und die untergeordneten Steuerelemente, deren Eigenschaften auf den einzelnen Datenelementen basieren, werden erstellt. Durch Hinzufügen der neuen untergeordneten Steuerelemente zur Controls-Auflistung des Steuerelements werden die untergeordneten Steuerelemente wiedergegeben. In der Steuerelementhierarchie erfolgt die Wiedergabe während der geerbten Render-Methode des Steuerelements. Wahlweise können Sie die Render-Methode überschreiben, um eine spezielle Wiedergabe für das benutzerdefinierte Steuerelement durchzuführen, beispielsweise zum Hinzufügen zusätzlicher HTML-Elemente oder zur Anzeige im Entwurfsmodus.

Um die Benutzeroberflächenobjekte zur Darstellung der Daten zu erstellen, überschreiben Sie die PerformDataBinding-Methode, und führen Sie die folgenden Aufgaben aus:

  1. Rufen Sie die PerformDataBinding-Methode auf, um die Ausführung jedes Codes zuzulassen, der auf dieser Methode basiert.

  2. Durchlaufen Sie die Datenauflistung, und erstellen Sie untergeordnete Steuerelemente zur Darstellung der Daten in der Benutzeroberflächenanzeige. Fügen Sie alle untergeordneten Steuerelemente der Auflistung des Steuerelements hinzu, indem Sie die Add-Methode des Steuerelements aufrufen.

  • Das folgende Codebeispiel veranschaulicht das Überschreiben der PerformDataBinding-Methode. Die PerformDataBinding-Methode wird aufgerufen, um die Ausführung jedes Codes zuzulassen, der auf dieser Methode basiert. Die Datenauflistung wird aufgelistet, und es werden untergeordnete Steuerelemente zur Darstellung der Daten in der Benutzeroberflächenanzeige erstellt.
        Protected Overrides Sub PerformDataBinding(ByVal retrievedData As IEnumerable)
            MyBase.PerformDataBinding(retrievedData)

            ' Verify data exists.
            If Not (retrievedData Is Nothing) Then
                Dim tbl As New Table()
                Dim row As TableRow
                Dim cell As TableCell
                Dim dataStr As String = String.Empty

                Dim dataItem As Object
                For Each dataItem In retrievedData
                    ' If the DataTextField was specified get the data
                    ' from that field, otherwise get the data from the first field. 
                    If DataTextField.Length > 0 Then
                        dataStr = DataBinder.GetPropertyValue(dataItem, DataTextField, Nothing)
                    Else
                        Dim props As PropertyDescriptorCollection = TypeDescriptor.GetProperties(dataItem)
                        If props.Count >= 1 Then
                            If Nothing <> props(0).GetValue(dataItem) Then
                                dataStr = props(0).GetValue(dataItem).ToString()
                            End If
                        End If
                    End If

                    row = New TableRow()
                    tbl.Rows.Add(row)
                    cell = New TableCell()
                    cell.Text = dataStr
                    row.Cells.Add(cell)
                Next dataItem

                Controls.Add(tbl)
            End If

        End Sub
    End Class
End Namespace
protected override void PerformDataBinding(IEnumerable retrievedData)
{
    base.PerformDataBinding(retrievedData);

    // Verify data exists.
    if (retrievedData != null)
    {
        Table tbl = new Table();
        TableRow row;
        TableCell cell;
        string dataStr = String.Empty;

        foreach (object dataItem in retrievedData)
        {
            // If the DataTextField was specified get the data
            // from that field, otherwise get the data from the first field. 
            if (DataTextField.Length > 0)
            {
                dataStr = DataBinder.GetPropertyValue(dataItem,
                    DataTextField, null);
            }
            else
            {
                PropertyDescriptorCollection props =
                        TypeDescriptor.GetProperties(dataItem);
                if (props.Count >= 1)
                {
                    if (null != props[0].GetValue(dataItem))
                    {
                        dataStr = props[0].GetValue(dataItem).ToString();
                    }
                }
            }

            row = new TableRow();
            tbl.Rows.Add(row);
            cell = new TableCell();
            cell.Text = dataStr;
            row.Cells.Add(cell);
        }

        this.Controls.Add(tbl); 
    }
}

Erstellen des benutzerdefinierten Serversteuerelements

Weitere Informationen zum Erstellen des benutzerdefinierten datengebundenen Webserversteuerelements und dessen Verwendung auf einer Webseite finden Sie unter Erstellen der Beispiele für benutzerdefinierte Serversteuerelemente.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten datengebundenen ASP.NET-Websteuerelements für ASP.NET 2.0

Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Serversteuerelements

Konzepte

Übersicht über datengebundene ASP.NET-Webserversteuerelemente

Metadatenattribute für benutzerdefinierte Serversteuerelemente

Übersicht über ASP.NET-Steuerelement-Designer

Referenz

HierarchicalDataBoundControlDesigner

Weitere Ressourcen

Entwickeln von benutzerdefinierten ASP.NET-Serversteuerelementen