Laden...

Konzeptfrage: Produkt einer Kategorie zuordnen?

Erstellt von 7.e.Q vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.816 Views
7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 17 Jahren
Konzeptfrage: Produkt einer Kategorie zuordnen?

Hi Leute,

ich hab eine Datenbank, die in ihrer Struktur ähnlich der Beispiel-DB Northwind vom MSSQL Server ist. Also mit Produkten, die Kategorien über die ID der Kategorie zugeordnet sind. Jedes Produkt hat also ein Feld CategoryID. Die Kategorien sind in einer Baum-Struktur geordnet, haben also auch ein Feld ParentCategoryID.

Die Frage ist jetzt (bitte genau lesen), wie ich diese Kategorisierung in einem Formular optisch am besten gestalte. Ich dachte schon an ein TreeView. Hierbei habe ich allerdings das Problem, daß ich dieses nicht direkt an die Datenbank binden kann, also die Zuweisung einer neuen Kategorie manuell vornehmen muss, was mein gesamtes rein Datenbindungs-gesteuertes Grundkonzept wieder unterminiert. Wie könnte ich diese Baumstruktur am besten direkt datenbankgebunden darstellen und mit einem Klick auf eine der dargestellten Kategorien dem aktuell ausgewählten Produkt die ID der neu gewählten Kategorie zuweisen, ohne nur für die Zuweisung extra Code schreiben zu müssen? Es sollte also direkt über die Datenbindung geschehen.

Gibt es da Möglichkeiten? Jemand 'ne Idee?

Danke
Gruß, Hendrik

563 Beiträge seit 2004
vor 17 Jahren

edit: sorry, hab nicht richtig gelesen =)

.unreal

p.s TreeView unterstützt kein DataBinding, müsstest auf ein 3rd Party Komponente zurückgreifen.

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 17 Jahren

... oder selber eine entwickeln... okay. Das kann was werden...

Kennst du eine 3rd Party Komponente, die das kann? Selbstverständlich wenn möglich OpenSource...

563 Beiträge seit 2004
vor 17 Jahren

guck mal bei www.codeproject.com, ich glaube ich hab dort mal eine gesehen, müsste aber selber suchen. Das überlass ich nun aber dir =)

.unreal

563 Beiträge seit 2004
vor 17 Jahren

Muss es ein TreeView sein? Kannst doch auch einfach eine Combobox für die Kategorienauswahl, und ein DataGridview für die Darstellung der Childs verwenden?

.unreal

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 17 Jahren

Naja, da die Kategorien in der Tabelle schon eine Art Baum darstellen (ParentID), dachte ich schon an eine Art TreeView, um alle Kategorien sinnvoll optisch anzuzeigen.

563 Beiträge seit 2004
vor 17 Jahren

Ohne DataBinding ist das ziemlich einfach Lösbar, wo ist das Problem?

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 17 Jahren

Das Problem ist, daß ich gern auf "ohne DataBinding" verzichten würde, da das gesamte restliche Programm mit DataBinding auskommt. DataBinding erleichtert und verkürzt einiges, wo man sonst immense Mengen Code für bräuchts. Ich weiß das, ich hab das Programm gerade dementsprechend umgestrickt, da mir DataBinding vorher nicht in dem Maße bekannt war.

563 Beiträge seit 2004
vor 17 Jahren

Das Treeview mit einer Rekursion zu füllen ist in ein par wenigen Zeilen geschrieben, ich weiss aber genau, was du an DataBinding magst 🙂 Trotzdem würde ich auf eine 3rd-Party-TreeViewWithDataBinding-Klasse verzichten.

.unreal

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 17 Jahren

Das Füllen selbst ist auch weniger das Problem. Das ist wirklich recht schnell abgehandelt. Problematisch wird es bei der Markierung der Kategorie des aktuell ausgewählten Produkts (wie macht man das dann am geschicktesten?) und bei der Zuweisung einer neu ausgewählten Kategorie.

Wie macht man diese beiden Punkte ohne Datenbindung, sodaß es sich auf das aktuelle Produkt exakt so auswirkt, wie eine Änderung an einer über Datenbindung angeschlossenen Eigenschaft?

563 Beiträge seit 2004
vor 17 Jahren

Hast du es schon mit einem DataBinding auf die SelectedNode versucht?

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 17 Jahren

Nee... geht das?

563 Beiträge seit 2004
vor 17 Jahren

Warum sollte es nicht "gehen"? Man kann jedes Property binden!

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 17 Jahren

Okay... Bildungskrater. Muss ich mir mal anschauen, hab gerade aber keinen Zugriff drauf. Danke für den Hinweis. 🙂 Ich meld mich wieder, wenn's klappt oder auch nicht.

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 17 Jahren

Da ich das mit der Bindung von SelectedNode nicht hinbekommen habe, habe ich mir jetzt ein DBTreeView abgeleitet. Also eine TreeView Komponente, die Datenbindung unterstützt. Allerdings auf das Daten-Schema der Tabelle optimiert. Heißt, sie passt aktuell auch wirklich nur für die Tabelle. Vielleicht erweitere ich sie mal, daß man die Identifikations- und Parent-Spalte auswählen kann. Grundsätzlich ist sie jetzt auf das 'Baumkonzept ParentID = ID' ausgerichtet und mit einer rekursiven Funktion versehen, die den Baum aufbaut.

Funktioniert soweit schon sehr gut.

190 Beiträge seit 2005
vor 17 Jahren