ObjectDataProvider

Erlaubt den Zugriff auf Objektstrukturen. Der Provider kann mit folgenden Typen/Schnittstellen zusammenarbeiten:

  IEnumerable (setzt jedoch mindestens einen Datensatz voraus)

  IEnumerable<T>

  IListSource

Die Eigenschaftsnamen und -typen können über die ITypedList Schnittstelle beeinflusst werden. Wenn nur der Name geändert werden soll ist es meist einfacher, das DisplayNameAttribute zu verwenden. Einzelne Member können über das Browsable(False) Attribut unterdrückt werden.

Der Provider kann leere Aufzählungen durchlaufen solange diese stark typisiert sind. Ansonsten wird mindestens ein Element in der Aufzählung vorausgesetzt. Dieses erste Element bestimmt den Typ der für das weitere Durchlaufen verwendet wird.

Der Provider unterstützt Sortierung automatisch sobald die Datenquelle die IBindingList Schnittstelle implementiert.

Dieser Datenprovider unterstützt auch die Bindung an LINQ Abfrageresultate, da diese IEnumerable<T> sind.

Bei Verwendung von EntityCollection<T>-Objekten als Datenquelle prüft der ObjectDataProvider zunächst mit Hilfe der IsLoaded-Eigenschaft den Zustand der Unterrelation und ruft gegebenenfalls dynamisch Load() auf. Damit werden die Daten bereitgestellt wenn sie benötigt werden. Beispiel:

class Car

{

    public string Brand { get; set; }

    public string Model { get; set; }

}

 

List<Car> cars = new List<Car>();

cars.Add(new Car { Brand = "VW", Model = "Passat"});

cars.Add(new Car { Brand = "Porsche", Model = "Cayenne"});

ListLabel LL = new ListLabel();

LL.DataSource = new ObjectDataProvider(cars);

LL.Design();

LL.Dispose();