Freigeben über


DataBoundControl.PerformDataBinding(IEnumerable) Methode

Definition

Bindet beim Überschreiben in einer abgeleiteten Klasse Daten aus der Datenquelle an das Steuerelement.

protected public:
 virtual void PerformDataBinding(System::Collections::IEnumerable ^ data);
protected internal virtual void PerformDataBinding (System.Collections.IEnumerable data);
abstract member PerformDataBinding : System.Collections.IEnumerable -> unit
override this.PerformDataBinding : System.Collections.IEnumerable -> unit
Protected Friend Overridable Sub PerformDataBinding (data As IEnumerable)

Parameter

data
IEnumerable

Die IEnumerable-Datenliste, die bei einem Aufruf der PerformSelect()-Methode zurückgegeben wurde.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie die PerformDataBinding -Methode in einer von abgeleiteten Klasse implementiert wird DataBoundControl. Das TextBoxSet -Steuerelement erstellt ein TextBox Steuerelement für jedes Datenelement, an das es gebunden ist. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die DataBoundControl-Klasse bereitgestellt wird.

protected override void PerformDataBinding(IEnumerable retrievedData) {
    base.PerformDataBinding(retrievedData);

    // If the data is retrieved from an IDataSource as an 
    // IEnumerable collection, attempt to bind its values to a 
    // set of TextBox controls.
    if (retrievedData != null) {

        foreach (object dataItem in retrievedData) {
            
            TextBox box = new TextBox();
            
            // The dataItem is not just a string, but potentially
            // a System.Data.DataRowView or some other container. 
            // If DataTextField is set, use it to determine which 
            // field to render. Otherwise, use the first field.                    
            if (DataTextField.Length > 0) {
                box.Text = DataBinder.GetPropertyValue(dataItem, 
                    DataTextField, null);
            }
            else {
                PropertyDescriptorCollection props = 
                    TypeDescriptor.GetProperties(dataItem);

                // Set the "default" value of the TextBox.
                box.Text = String.Empty;
                
                // Set the true data-bound value of the TextBox,
                // if possible.
                if (props.Count >= 1) {                        
                    if (null != props[0].GetValue(dataItem)) {
                        box.Text = props[0].GetValue(dataItem).ToString();
                    }
                }
            }                                        
            
            BoxSet.Add(box);
        }
    }
}
Protected Overrides Sub PerformDataBinding(ByVal retrievedData As IEnumerable)
    MyBase.PerformDataBinding(retrievedData)

    ' If the data is retrieved from an IDataSource as an IEnumerable 
    ' collection, attempt to bind its values to a set of TextBox controls.
    If Not (retrievedData Is Nothing) Then

        Dim dataItem As Object
        For Each dataItem In retrievedData

            Dim box As New TextBox()

            ' The dataItem is not just a string, but potentially
            ' a System.Data.DataRowView or some other container. 
            ' If DataTextField is set, use it to determine which 
            ' field to render. Otherwise, use the first field.                    
            If DataTextField.Length > 0 Then
                box.Text = DataBinder.GetPropertyValue( _
                dataItem, DataTextField, Nothing)
            Else
                Dim props As PropertyDescriptorCollection = _
                    TypeDescriptor.GetProperties(dataItem)

                ' Set the "default" value of the TextBox.
                box.Text = String.Empty

                ' Set the true data-bound value of the TextBox,
                ' if possible.
                If props.Count >= 1 Then
                    If props(0).GetValue(dataItem) IsNot Nothing Then
                        box.Text = props(0).GetValue(dataItem).ToString()
                    End If
                End If
            End If

            BoxSet.Add(box)
        Next dataItem
    End If

End Sub

Hinweise

Implementieren Sie diese Methode anstelle der DataBind -Methode, wenn Sie ein datengebundenes Steuerelement von der DataBoundControl -Klasse ableiten. Wenn Sie die Datenbindungslogik Ihres Steuerelements in PerformDataBinding platzieren, können Sie vermeiden, dass die DataBinding Ereignisse und DataBound in der falschen Reihenfolge ausgelöst werden.

Während die Basisklasse DataBoundControl keine spezifische Implementierung für diese Methode bereitstellt, wird die PerformDataBinding -Methode von der PerformSelect -Methode aufgerufen, um die Werte aller Benutzeroberflächensteuerelemente (UI) an die Daten zu binden, die von der PerformSelect -Methode abgerufen werden.

Gilt für: