Laden...

ObjectBindingSource

Erstellt von ErfinderDesRades vor 14 Jahren Letzter Beitrag vor 14 Jahren 6.171 Views
ErfinderDesRades Themenstarter:in
5.299 Beiträge seit 2008
vor 14 Jahren
ObjectBindingSource

Hi!

Auf Codeprojekt fund ich diese http://www.codeproject.com/KB/cs/ObjectBindingSource.aspx .
Da kann man eingeben, welche "nested properties" sie zur Datenbindung anbieten soll.

Angenommen die Tabellen-Hierarchie Category -> Product -> OrderDetail

Da kann man nun für eine OrderDetail-ObjectBindingsource die NestedProperty "Product.Category.CategoryName" angeben, und kann im daran gebundenen Datagridview sich den Namen der Kategorie des bestellten Produkts mit anzeigen lassen.

Dieses feine Konzept habich schlicht abgekupfert, nur mein Teil läuft im Designer stabiler (bei mir jedenfalls).
Dann habichnoch einen Self-Descriptor drangemacht.
Object-Databinding krankt ja daran, daß übergeordnete Entities nicht in einer Combobox-Column angezeigt werden können, weil Databinding nur an Properties anbindet, nicht an die Objekte selbst.
Üblicherweise macht man nun immer eine "Self"-Property an seine Entities, die nichts anderes tut, als sich selbst zurückzugeben (in meinen Augen stimmt irgendwas mit dem grundlegendem Design nicht, wenn sowas notwendig ist 😉 )
Jedenfalls, meine Objectbindingsource creiert nicht nur NestedPropertyDescriptors, sondern auch SelfDescriptors.
Also sie bietet Datenbindung an "Self" an auch für Entities, die diese depperte Self-Property nicht haben.

Sodaß man nun auch bei Object-Databinding übergeordnete Entities mit Comboboxen zuweisen kann.

Diese Self-Property bietet unerwarteterweise ein ganz neues Feature(chen): Man kann nun auch an primitive Daten binden, zb Enums. Das war vorher prinzipiell unmöglich, weil ein Enum hat ja keine Property zum dran binden.

Schlagwörter: <BindingSource, ObjectDatasource, Databinding>

Der frühe Apfel fängt den Wurm.

2.187 Beiträge seit 2005
vor 14 Jahren

Hallo ErfinderDesRades,

Danke! Ich arbeite schon einige Zeit mit der ObjectBindingSource und hab halt schon einige Mängel und Fehler mitgemacht. Mal schauen was deine Komponente besser macht (oder auch nicht 😉 ).

Gruß
Juy Juka

F
10.010 Beiträge seit 2004
vor 14 Jahren

Auf jeden fall solltest Du auch den orginalauthor davon unterrichten.

ErfinderDesRades Themenstarter:in
5.299 Beiträge seit 2008
vor 14 Jahren

Habich jetzt versucht, aber auf CodeProject keine Direkt-Kontakt-Möglichkeit gefunden.
Und ins Messageboard zu schreiben:
"Hi, tolle Idee! Habich geklaut und neu geschrieben, mit weniger Bugs, und noch die Self-Property hinzugefügt"
ist mir iwie zu blöd.
Also Urheber-Rechte verletze ich bestimmt keine, weil der Code ist komplett neu gemacht, und's ist ja der Sinn von CodeProjekt, Ideen zu verbreiten.

Ansonsten neues Update (1.Post):
die eigentlich ObjectBindingsource hat nur wenig Änderung erfahren, aber der ContextManager kann jetzt eine Databinding verwalten, was dem Databinding beim Dataset einigermaßen ebenbürtig ist. Kanner aber nur im zusammenspiel mit ObjectBindingSources, weil die ein "Removed"-Event hat, welches nochmal Zugriff auf die bereits aus dem DC entfernte Entity bietet.

Der Anhang demonstriert nochma die Mankos von Databinding mittm üblichen DataContext

Hinweis: Beide Uploads haben ein Readme 😉

Der frühe Apfel fängt den Wurm.

6.911 Beiträge seit 2009
vor 14 Jahren

Auf jeden fall solltest Du auch den orginalauthor davon unterrichten.

Muss er laut Lizenz des Artikels bzw. dessen Codes nicht.

The Code Project Open License (CPOL)

The main points subject to the terms of the License are:

* Source Code and Executable Files can be used in commercial applications;  
* Source Code and Executable Files can be redistributed; and  
* Source Code can be modified to create derivative works.  
* No claim of suitability, guarantee, or any warranty whatsoever is provided. The software is provided &quot;as-is&quot;.  

Provides copyright protection: True  
Can be used in commercial applications: True  
Bug fixes / extensions must be released to the public domain: False  
Provides an explicit patent license: True  
Can be used in proprietary (closed source) applications: True  
Is a viral licence: False

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo gfoidl,

die Empfehlung von FZelle ist als "gehört sich so" bzw. "ist sehr wünschenswert" durchaus berechtig, aber lasst uns das in "Projekte" bitte nicht ausdiskutieren.

herbivore