VB.Net-Forum - Beitragsübersicht -
ThemaV03: Komplexes Problem: Casting oder DataGrid
Von Stan
Datum 23. Februar 2016 um 22:53:31
Frage Hallo zusammen,

ich habe noch ein Thema bei dem ich einen Sparringspartner brauche.

Ich habe ein DataGrid, dass ich direkt an eine ObservableCollection gebunden habe. Die Collection ist von meinem Basistyp, sagen wir zur Vereinfachung, diese wäre vom Typ Fahrzeug. Nun gibt es mehrere Ableitungen wie z.B. Auto oder Flugzeug.

Meine Idee war, dass der User im Datagrid alle Fahrzeuge(Auto, Flugzeug, etc) sehen und bearbeiten kann. Anfäglich kann der User nur die Eigenschaften verändern, die alle gemeinsam besitzen, also Fahrzeug. Setzt der User einen Filter, beidem nur noch Autos übrg bleiben, so würde ich die ObservableCollection Casten und darauß Autos machen. Der User könnte sofort alle Eigenschaften eines Autos bearbeiten.
Hochdynamisch ;-)

Mein Problem ist das Anlegen einer neuen Zeile. Der User sollte die Art des Fahrzeugs über eine Dropdownliste auswählen können. Allerdings wird durch das DataGrid bereits beim Anklicken der neuen Zeile ein neues Objekt angelegt, dann vom Basistyp.

Zuerst wollte ich das Anlegen der neuen Zeile bis zur Auswahl des Typs via Combobox heruaszögern, aber ich glaube das DataGrid braucht den Eintrag zur Datenhaltung. => Hier bin aber offen für Lösungsvorschläge

Deshalb habe ich mich auf das Casten konzentriert, um die Objekte im Nachgang zu verändern. Ich weiß, dass ich
=> aus einem Child immer den Parent casten kann(Auto => Fahrzeug)
=> den so erstellen Parent wieder zum Child casten kann(Fahrzeug(Auto) => Auto)

Allerdings müsste ich ein reinen Parent zu einem beliebigen Child(Fahrzeug => Auto) "erweitern", beziehungsweise ein Child in ein anderes Child(Auto => Flugzeug) "umwandeln" können. Ich würde einen Datenverlust aller Childvariablen akzeptieren.

Irgendwelche Ideen?

Beste Grüße
Stan
Public Class Fahrzeug

Public geschwindigkeit As Integer

End Class

Public Class Auto
Inherits Fahrzeug

Public Allrad As Boolean

End Class

Public Class Flugzeug
Inherits Fahrzeug

Public maxFlughoehe As Long

End Class
Antwort:
Von stan
Datum 02. März 2016 um 21:53:36
Antwort Hallo Nico,

ich habe mich heute mal hingesetzt und versucht deinen Plan umzusetzen. Aber ich muss sagen ich verstehe nicht alles, von dem was du geschrieben hast.

Eine Klasse zu schreiben, die einen Objektverweis auf meine ObservableCollection hat war kein Problem. Zum Thema Typ, die Liste von Fahrzeugen zum Beispiel so gefilter wird, dann will ich prüfen: Wenn nur noch ein Objekttyp(z.B. Autos) vorhanden ist, dann wil ich die komplette Liste in diesen Typ umwandeln. Daher brauche ich vermutlich keinen speziellen Typparameter.

Und jetzt? Muss ich in meinen Konstruktor einen Handler für die Ereignisse
- INotifyPropertyChanged
- INotifyCollectionChanged

hinzufügen? Habe ich das so richtig verstanden? Und wie binde ich dann meinen Adapter an das Datagrid?
Public Class connectAdapter
Private vList As vehicleList
Public Sub New(ByRef _vList As vehicleList)
vList = _vList
End Sub

End Class

Public Class vehicleList
Inherits ObservableCollection(Of vehicle)

End Class
Public Class vehicle
Private name As String

Public Property Name1 As String
Get
Return name
End Get
Set(value As String)
name = value
End Set
End Property
End Class
Public Class car
Inherits vehicle
'weitere Felder
End Class
Public Class plane
Inherits vehicle
'weitere Felder
End Class
Danke und einen tollen Abend
Stan
[ Antwort schreiben | Zurück zum VB.Net-Forum | Forum-Hilfe ]
Antworten
V03: Komplexes Problem: Casting oder DataGrid - Stan 23. Februar 2016 um 22:53:31
Re: Komplexes Problem: Casting oder DataGrid - Nico 24. Februar 2016 um 09:17:15
Re: Komplexes Problem: Casting oder DataGrid - stan 25. Februar 2016 um 20:01:21
Re: Komplexes Problem: Casting oder DataGrid - stan 01. März 2016 um 21:54:10
Re: Komplexes Problem: Casting oder DataGrid - Nico 01. März 2016 um 22:20:06
Re: Komplexes Problem: Casting oder DataGrid - Stan 01. März 2016 um 22:30:08
Re: Komplexes Problem: Casting oder DataGrid - stan 02. März 2016 um 21:53:36
Re: Komplexes Problem: Casting oder DataGrid - Nico 03. März 2016 um 10:41:00
Re: Komplexes Problem: Casting oder DataGrid - stan 05. März 2016 um 15:32:49
Re: Komplexes Problem: Casting oder DataGrid - Nico 06. März 2016 um 10:31:44
Re: Komplexes Problem: Casting oder DataGrid - stan 07. März 2016 um 21:32:20

Ihre Antwort
(Nick-)Name   Wichtige Informationen zur Namensangabe
E-Mail (opt.)  Wichtige Informationen zur Angabe einer eMail-Adresse
Thema   Wichtige Informationen zur Angabe eines Themas
Betrifft (IDE)  VB.Net 2003
Ihre Antwort
Smilies
Mehr...
FettKursivUnterstrichen   Übersicht der Tipp-KürzelÜbersicht der Projekt-KürzelÜbersicht der Bücher-Kürzel 
Homepage
Titel
Root-Smilies              
             
             
[ Zurück zum VB.Net-Forum | Forum-Archiv | Forum-Hilfe | Chat ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB.Net | VB/VBA-Forum | DirectX | DirectX-Forum | Chat | Ausschreibungen | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 13. Dezember 2015