Grüßt euch,
ich habe nach meinen letzten Fragen eine Menge gelernt was das Arbeiten mit typisierten Datasets angeht, habe die "4 Views" vom EDR durchgearbeitet und weitgehend verstanden, mich mit der dbextention beschäftigt, die ja auch sehr hilfreiche Funktionen bereitstellt.
Gehen wir mal davon aus es geht um eine einfache Auftragsverwaltung mit den Tabellen Artikelkategorie, Artikel, Kunde, Aufträge und AuftragArtikel. Ich denke das sollte soweit selbsterklärend sein.
Diese habe ich angelegt und wenn ich nur Datagridviews erstelle und diese auch miteinander verknüpfe auf einem einzelnen Form, dann klappt das auch wie geschmiert, also gehe ich davon aus, dass die Relationen passen usw.
So weit so gut.
Jetzt möchte ich das ganze ein bisschen schöner machen, also soll es ein AuftragÜbersicht-Form geben, in dem ein Datagridview mit allen Aufträgen enthalten ist. Das ist ja erstmal einfach. Dann kann man einen Eintrag auswählen und mit Klick auf "bearbeiten" soll dieser Auftrag bearbeitet werden können. Dazu soll sich ein weiteres Fenster öffnen (AuftragDetails), oben mit den Details wie Kundennummer, Name, Adresse... und im unteren Bereich die Auflistung der zugehörigen Artikel. Diese sollen bearbeitet werden können, also hinzufügen, ändern, löschen, Suche für einen anderen Kunden,... Anschließend kann mit Klick auf speichern gespeichert und das neue Fenster wieder geschlossen werden. Man ist also wieder bei der tabellearischen Übersicht aller Aufträge.
Für die Artikel klappt das schon wunderbar, entsprechend dem VideoTutorial vom Erfinder der Rades (dort gibt es ja keine untergeordnete Sammlung an Zeilen wie das beim Auftrag der Fall ist...).
1. Frage: Wie geht man richtig vor um das umzusetzen?
Mein Ansatz: Ich kann in der Auftragsmaske über bindingsource.current die aktuell ausgewählte Zeile an das neue Form übergeben, dort verändern und anschließend bei Klick auf speichern die Row speichern oder wieder zurückgeben... Ist das ein (logischer) Weg?
Mein Gedanke: Das klappt ein bisschen: Ich kann vorhandene Aufträge anschauen und vorhandene Artikel auch bearbeiten. Das Hinzufügen oder Löschen von Artikeln klappt aber nicht. (Ich hoffe, dass dieser Schritt jetzt nur noch "trivial" ist...) Wie müsste das "im Dataset speichern" umgesetzt werden?
2. Frage: Kann ich in der AuftragDetails Maske das Datagridview auch durch ein eigen entworfenes Benutzersteuerelement ersetzen? (Zum Beispiel ein Steuerelement welches jede Artikelzeile repräsentiert und dann in einem FlowLayoutPanel angeordnet wird? Da habe ich schon wirklich ganz coole Sachen basteln können die dann zum Beispiel den Inhalt einer List (of EigeneKlasse) enthalten. In der Hilfe von Microsoft habe ich zwar sogar etwas in der Richtung gefunden, aber bin nicht richtig weiter gekommen, dort habe ich nicht alles verstanden.
Könnt Ihr mir da weiterhelfen ? Kennt jemand darüber hinaus Tutorials oder Bücher die an dieser Stellen weiterhelfen?
Was ich bis jetzt habe:
(Im Form Auftragsübersicht)
(im Form AuftragDetails)
Insbesondere beim Füllen des DGV und der List of bin ich mir sicher, dass es dort einen anderen Way to go gibt, vermutlich auch bei der Übergabe der Auftragsnummer...
Danke schonmal für eure Hilfe
CodeTags korrigiert ~VaporiZed
ich habe nach meinen letzten Fragen eine Menge gelernt was das Arbeiten mit typisierten Datasets angeht, habe die "4 Views" vom EDR durchgearbeitet und weitgehend verstanden, mich mit der dbextention beschäftigt, die ja auch sehr hilfreiche Funktionen bereitstellt.
Gehen wir mal davon aus es geht um eine einfache Auftragsverwaltung mit den Tabellen Artikelkategorie, Artikel, Kunde, Aufträge und AuftragArtikel. Ich denke das sollte soweit selbsterklärend sein.
Diese habe ich angelegt und wenn ich nur Datagridviews erstelle und diese auch miteinander verknüpfe auf einem einzelnen Form, dann klappt das auch wie geschmiert, also gehe ich davon aus, dass die Relationen passen usw.
So weit so gut.
Jetzt möchte ich das ganze ein bisschen schöner machen, also soll es ein AuftragÜbersicht-Form geben, in dem ein Datagridview mit allen Aufträgen enthalten ist. Das ist ja erstmal einfach. Dann kann man einen Eintrag auswählen und mit Klick auf "bearbeiten" soll dieser Auftrag bearbeitet werden können. Dazu soll sich ein weiteres Fenster öffnen (AuftragDetails), oben mit den Details wie Kundennummer, Name, Adresse... und im unteren Bereich die Auflistung der zugehörigen Artikel. Diese sollen bearbeitet werden können, also hinzufügen, ändern, löschen, Suche für einen anderen Kunden,... Anschließend kann mit Klick auf speichern gespeichert und das neue Fenster wieder geschlossen werden. Man ist also wieder bei der tabellearischen Übersicht aller Aufträge.
Für die Artikel klappt das schon wunderbar, entsprechend dem VideoTutorial vom Erfinder der Rades (dort gibt es ja keine untergeordnete Sammlung an Zeilen wie das beim Auftrag der Fall ist...).
1. Frage: Wie geht man richtig vor um das umzusetzen?
Mein Ansatz: Ich kann in der Auftragsmaske über bindingsource.current die aktuell ausgewählte Zeile an das neue Form übergeben, dort verändern und anschließend bei Klick auf speichern die Row speichern oder wieder zurückgeben... Ist das ein (logischer) Weg?
Mein Gedanke: Das klappt ein bisschen: Ich kann vorhandene Aufträge anschauen und vorhandene Artikel auch bearbeiten. Das Hinzufügen oder Löschen von Artikeln klappt aber nicht. (Ich hoffe, dass dieser Schritt jetzt nur noch "trivial" ist...) Wie müsste das "im Dataset speichern" umgesetzt werden?
2. Frage: Kann ich in der AuftragDetails Maske das Datagridview auch durch ein eigen entworfenes Benutzersteuerelement ersetzen? (Zum Beispiel ein Steuerelement welches jede Artikelzeile repräsentiert und dann in einem FlowLayoutPanel angeordnet wird? Da habe ich schon wirklich ganz coole Sachen basteln können die dann zum Beispiel den Inhalt einer List (of EigeneKlasse) enthalten. In der Hilfe von Microsoft habe ich zwar sogar etwas in der Richtung gefunden, aber bin nicht richtig weiter gekommen, dort habe ich nicht alles verstanden.
Könnt Ihr mir da weiterhelfen ? Kennt jemand darüber hinaus Tutorials oder Bücher die an dieser Stellen weiterhelfen?
Was ich bis jetzt habe:
(Im Form Auftragsübersicht)
VB.NET-Quellcode
- Private Sub ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AuftragBearbeitenToolStripMenuItem.Click
- Select Case True
- Case sender Is AuftragBearbeitenToolStripMenuItem
- Dim Adet As New Auftragdetails(DirectCast(DirectCast(TblAufträgeBindingSource.Current, DataRowView).Row, DTSAuftragsverwaltung.tblAufträgeRow).ID)
- Adet.Show()
- End Select
(im Form AuftragDetails)
VB.NET-Quellcode
- Public Class Auftragdetails
- Dim rwAuftrag As DTSAuftragsverwaltung.tblAufträgeRow
- Dim _Auftragsnummer As Integer
- Public Sub New(ByVal Auftragsnummer As Integer)
- ' Dieser Aufruf ist für den Designer erforderlich.
- InitializeComponent()
- _Auftragsnummer = Auftragsnummer
- ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
- rwAuftrag = Auftragsmaske.DTSAuftragsverwaltung.tblAufträge.FindByID(_Auftragsnummer)
- End Sub
- Private Sub Auftragdetails_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- IDTextBox.Text = rwAuftrag.ID
- VornameTextBox.Text = rwAuftrag.tblKundenRow.Vorname
- NachnameTextBox.Text = rwAuftrag.tblKundenRow.Nachname
- StraßeTextBox.Text = rwAuftrag.tblKundenRow.Straße
- PostleitzahlTextBox.Text = rwAuftrag.tblKundenRow.Postleitzahl
- OrtTextBox.Text = rwAuftrag.tblKundenRow.Ort
- AnredeTextBox.Text = rwAuftrag.tblKundenRow.Anrede
- Dim lst As New List(Of DTSAuftragsverwaltung.tblAuftrArtikelRow)
- For Each rw In rwAuftrag.GettblAuftrArtikelRows
- lst.Add(rw)
- Next
- DataGridView1.DataSource = lst
- End Sub
- End Class
Insbesondere beim Füllen des DGV und der List of bin ich mir sicher, dass es dort einen anderen Way to go gibt, vermutlich auch bei der Übergabe der Auftragsnummer...
Danke schonmal für eure Hilfe
CodeTags korrigiert ~VaporiZed
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()