DataBoundControl.PerformDataBinding(IEnumerable) Метод

Определение

При переопределении в производном классе привязывает данные в источнике данных к элементу управления.When overridden in a derived class, binds data from the data source to the control.

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)

Параметры

data
IEnumerable

Список данных IEnumerable, возвращенных в результате вызова метода PerformSelect().The IEnumerable list of data returned from a PerformSelect() method call.

Примеры

В следующем примере кода показано, как реализовать PerformDataBinding метод в классе, производном от DataBoundControl .The following code example demonstrates how to implement the PerformDataBinding method in a class derived from DataBoundControl. TextBoxSetЭлемент управления создает TextBox элемент управления для каждого элемента данных, к которому он привязан.The TextBoxSet control creates a TextBox control for each data item it is bound to. Этот пример кода является частью большого примера, приведенного для DataBoundControl класса.This code example is part of a larger example provided for the DataBoundControl class.

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

Комментарии

Реализуйте этот метод вместо DataBind метода при наследовании элемента управления с привязкой к данным из DataBoundControl класса.Implement this method instead of the DataBind method when you derive a data-bound control from the DataBoundControl class. Размещение логики привязки данных элемента управления в PerformDataBinding позволяет избежать DataBinding DataBound возникновения событий и в неправильном порядке.Placing your control's data-binding logic in PerformDataBinding enables you to avoid the DataBinding and DataBound events being raised in the wrong order.

Хотя базовый DataBoundControl класс не предоставляет конкретную реализацию для этого метода, метод PerformDataBinding вызывается PerformSelect методом для привязки значений любого элемента управления пользовательского интерфейса к данным, получаемым PerformSelect методом.While the base DataBoundControl class provides no specific implementation for this method, the PerformDataBinding method is called by the PerformSelect method to bind the values of any user interface (UI) controls to the data that is retrieved by the PerformSelect method.

Применяется к