DGV Gruppe erstellen

  • VB.NET

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von vierkant.

    DGV Gruppe erstellen

    Hallo liebes Forum!
    Auf diese Weise befülle ich mein Datengebundenes Datagridview:

    VB.NET-Quellcode

    1. Dim fs As FileStream = File.OpenWrite(Path.GetDirectoryName(Application.ExecutablePath) & "\Daten\" & "Daten.xml")
    2. Dim sw As New StreamWriter(fs)
    3. sw.Close()
    4. Dim Table As DataTable = Form1.Atemschutzrechner_reloadetDataSet.Tables("DataTable1")
    5. Dim row As DataRow = Table.NewRow()
    6. Dim row1 As DataRow = Table.NewRow()
    7. Dim row2 As DataRow = Table.NewRow()
    8. row(0) = TextBox1.Text
    9. row(1) = TextBox2.Text
    10. row(2) = TextBox3.Text
    11. row(3) = NumericUpDown1.Value
    12. row1(0) = TextBox4.Text
    13. row1(1) = TextBox5.Text
    14. row1(2) = TextBox6.Text
    15. row1(3) = NumericUpDown2.Value
    16. row2(0) = TextBox7.Text
    17. row2(1) = TextBox8.Text
    18. row2(2) = TextBox9.Text
    19. row2(3) = NumericUpDown3.Value
    20. row.EndEdit()


    Ist es irgendwie möglich hier Gruppen zu erstellen?
    Soll bedeuten ich gebe 3 Zeilen auf diese Art und weise ins DGV ein und diese 3 Zeilen sollten sich dann in einer Gruppe befinden.

    Danke im Vorraus!!
    Hast Du evtl. Zeilen und Spalten verwechselt?
    Nicht in Row(3) NumericUpDownX.Value eintragen, sondern in Col(3).
    Jede Zeile ist ein zusammengehöriger Satz.
    Jede Spalte ist eine Property solcher zusammengehöriger Sätze.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi!
    Nein der Code funktioniert so!

    Row(0) ist eine Spalte!

    Habe gerade gesehen das auf meinen Post folgender abschließender Code fehlt:

    VB.NET-Quellcode

    1. Form1.Atemschutzrechner_reloadetDataSet.Tables("DataTable1").Rows.Add(row)


    Also mit dieser Methode werden Automatisch 3 Zeilen mit 4 Spalten angelegt:

    VB.NET-Quellcode

    1. Dim fs As FileStream = File.OpenWrite(Path.GetDirectoryName(Application.ExecutablePath) & "\Daten\" & "Daten.xml")
    2. Dim sw As New StreamWriter(fs)
    3. sw.Close()
    4. Dim Table As DataTable = Form1.Atemschutzrechner_reloadetDataSet.Tables("DataTable1")
    5. Dim row As DataRow = Table.NewRow()
    6. Dim row1 As DataRow = Table.NewRow()
    7. Dim row2 As DataRow = Table.NewRow()
    8. row(0) = TextBox1.Text
    9. row(1) = TextBox2.Text
    10. row(2) = TextBox3.Text
    11. row(3) = NumericUpDown1.Value
    12. row1(0) = TextBox4.Text
    13. row1(1) = TextBox5.Text
    14. row1(2) = TextBox6.Text
    15. row1(3) = NumericUpDown2.Value
    16. row2(0) = TextBox7.Text
    17. row2(1) = TextBox8.Text
    18. row2(2) = TextBox9.Text
    19. row2(3) = NumericUpDown3.Value
    20. row.EndEdit()
    21. Form1.Atemschutzrechner_reloadetDataSet.Tables("DataTable1"


    Jetzt sollen diese 3 Zeilen in einer Gruppe zusammen gefasst werden (Gruppe1).

    Legt der User jetzt die nächsten 3 Zeilen an sollen diese in eine 2. Gruppe angelegt werden (Gruppe2).

    Und werden die nächsten 3 Zeilen angelegt dann sollen diese wieder in eine neue Gruppe angelegt werden (Gruppe3).
    Und immer so weiter.............


    So in etwar sollte es dann ausschauen (nur eben 3 Zeilen):

    vierkant schrieb:

    Row(0) ist eine Spalte!
    :D :D :D
    Row ist englisch und bedeutet Zeile,
    Columne (Col) bedeutet Spalte.
    Ich halte es für sehr sinnvoll, Deine Bezeichnungen anzupassen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    vierkant schrieb:

    Row(0) ist eine Spalte!
    :D :D :D
    Row ist englisch und bedeutet Zeile,
    Columne (Col) bedeutet Spalte.
    Ich halte es für sehr sinnvoll, Deine Bezeichnungen anzupassen.


    Ja OK! Mach ich - Trotzdem hilft es mir nicht bei meinem Problem weiter! :rolleyes:

    VB.NET-Quellcode

    1. Dim fs As FileStream = File.OpenWrite(Path.GetDirectoryName(Application.ExecutablePath) & "\Daten\" & "Daten.xml")
    2. Dim sw As New StreamWriter(fs)
    3. sw.Close()
    4. Dim Table As DataTable = Form1.Atemschutzrechner_reloadetDataSet.Tables("DataTable1")
    5. Dim col As DataRow = Table.NewRow()
    6. Dim col1 As DataRow = Table.NewRow()
    7. Dim col2 As DataRow = Table.NewRow()
    8. col(0) = TextBox1.Text
    9. col(1) = TextBox2.Text
    10. col(2) = TextBox3.Text
    11. col(3) = NumericUpDown1.Value
    12. col1(0) = TextBox4.Text
    13. col1(1) = TextBox5.Text
    14. col1(2) = TextBox6.Text
    15. col1(3) = NumericUpDown2.Value
    16. col2(0) = TextBox7.Text
    17. col2(1) = TextBox8.Text
    18. col2(2) = TextBox9.Text
    19. col2(3) = NumericUpDown3.Value
    20. col.EndEdit()
    21. Form1.Atemschutzrechner_reloadetDataSet.Tables("DataTable1"

    vierkant schrieb:

    Row(0) ist eine Spalte!

    vierkant schrieb:

    Dim col As DataRow = Table.NewRow()
    Und was ist DataRow?
    Erst aufräumen, dann neu bauen. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ersetze

    VB.NET-Quellcode

    1. col durch row
    2. col1 durch row1
    3. col2 durch row2
    Rechter Mausklick drauf, Umbenennen. Den Rest macht das Studio.
    Und dann lese ich mir Dein eigentliches Problem noch mal durch. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Ersetze

    VB.NET-Quellcode

    1. col durch row
    2. col1 durch row1
    3. col2 durch row2
    Rechter Mausklick drauf, Umbenennen. Den Rest macht das Studio.
    Und dann lese ich mir Dein eigentliches Problem noch mal durch. :D


    Jetzt verarscht du mich oder?

    Hast doch eben geschrieben ich solle row durch col ersetzen - jetzt wieder umgekehrt????

    Bin ja wirklich um jede Hilfe Dankbar, aber das ist auch nicht gerade fein von dir
    ;(

    vierkant schrieb:

    Jetzt verarscht du mich oder?
    Na vielen Dank auch.
    Lies zunächst Deine Zeilen und verstehe die Sprache, bevor Du zu solchen Worten greifst. X(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich versteh dich nicht!!!!!
    Der von mir verwendete Code funktioniert! Hab ich doch schon ein paar mal geschrieben!

    So werden in die DGV 3 Zeilen geschrieben:

    VB.NET-Quellcode

    1. Dim fs As FileStream = File.OpenWrite(Path.GetDirectoryName(Application.ExecutablePath) & "\Daten\" & "Daten.xml")
    2. Dim sw As New StreamWriter(fs)
    3. sw.Close()
    4. Dim Table As DataTable = Form1.Atemschutzrechner_reloadetDataSet.Tables("DataTable1")
    5. Dim col As DataRow = Table.NewRow()
    6. Dim col1 As DataRow = Table.NewRow()
    7. Dim col2 As DataRow = Table.NewRow()
    8. col(0) = TextBox1.Text
    9. col(1) = TextBox2.Text
    10. col(2) = TextBox3.Text
    11. col(3) = NumericUpDown1.Value
    12. col1(0) = TextBox4.Text
    13. col1(1) = TextBox5.Text
    14. col1(2) = TextBox6.Text
    15. col1(3) = NumericUpDown2.Value
    16. col2(0) = TextBox7.Text
    17. col2(1) = TextBox8.Text
    18. col2(2) = TextBox9.Text
    19. col2(3) = NumericUpDown3.Value
    20. col.EndEdit()
    21. Form1.Atemschutzrechner_reloadetDataSet.Tables("DataTable1")


    Und jetzt meine Frage - wie kann ich dies in Gruppen aufteilen?
    Jedes mal wenn durch den genannten Code 3 Zeilen eingefügt werden sollen diese 3 Zeilen in eine neue Gruppe eingegliedert werden?

    Ich verstehe nicht warum du mir bei einem Problem helfen willst mit dem
    ich
    kein Problem habe?

    Tut mir leid das ich kein Programmierer bin!

    Es handelt sich bei diesem Programm um eine Atemschutzberrechnung für die Freiwillige Feuerwehr

    vierkant schrieb:

    Der von mir verwendete Code funktioniert!
    Fein.
    Ich habe lediglich versucht, Dich auf eine interne Un-Logik Deines Codes hinzuweisen.
    -----
    Das Bild, das Du da oben gepostet hast, ist kein DataGridView. Was es für eins ist, weiß ich nicht.
    Du solltest also mit diesem Bild im Eröffnungspost einen Thread aufmachen, auf diesen Thread verweisen und nach dem dargestellten Control fragen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    vierkant schrieb:

    Will ja nur das sich immer 3 Zeilen Gruppieren
    Dieses Gruppierungs-Feature ist kein Feature des DataGridViews, sondern eines anderen Controls, nennen wir es DataGridViewEx. Suche also nach dem Control DataGridViewEx.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So hab jetzt noch etwas herumgesucht und bin da drauf gestoßen: msdn.microsoft.com/en-us/library/ff407126.aspx

    Mein Englisch ist zwar unter jeder Sau aber soweit ich verstehe sollte diese Funktion mit Netframe 4.5 funktionieren -

    So bin nun hergegangen und habe Visual Studio 2012 Installiert (da ist ja Netframe 4.5 mit dabei)


    Könnte mir jetzt wer weiter helfen wie könnte das jetzt funktionieren. Wie müsste ich meinen Code:

    VB.NET-Quellcode

    1. Dim fs As FileStream = File.OpenWrite(Path.GetDirectoryName(Application.ExecutablePath) & "\Daten\" & "Daten.xml")
    2. Dim sw As New StreamWriter(fs)
    3. sw.Close()
    4. Dim Table As DataTable = Form1.Atemschutzrechner_reloadetDataSet.Tables("DataTable1")
    5. Dim col As DataRow = Table.NewRow()
    6. Dim col1 As DataRow = Table.NewRow()
    7. Dim col2 As DataRow = Table.NewRow()
    8. col(0) = TextBox1.Text
    9. col(1) = TextBox2.Text
    10. col(2) = TextBox3.Text
    11. col(3) = NumericUpDown1.Value
    12. col1(0) = TextBox4.Text
    13. col1(1) = TextBox5.Text
    14. col1(2) = TextBox6.Text
    15. col1(3) = NumericUpDown2.Value
    16. col2(0) = TextBox7.Text
    17. col2(1) = TextBox8.Text
    18. col2(2) = TextBox9.Text
    19. col2(3) = NumericUpDown3.Value
    20. col.EndEdit()
    21. Form1.Atemschutzrechner_reloadetDataSet.Tables("DataTable1")


    ändern damit diese 3 soeben angelegten Zeilen in einer neuen Gruppe sind
    Gruppieren ist so, wie du dir das vorstellst mit dem Datagridview nicht möglich. Da wäre dann WPF angebrachter. Dort kann man ItemControls mit Gruppierungen erstellen. Aber ich halte es für ausgeschlossen, dass du den Wechsel mit deinem Kenntnisstand hinbekommst. ;)
    Du solltest dich mit einem typisierten Dataset beschäftigen (wurde weiter oben schon mal vorgeschlagen und geflissentlich ignoriert)

    Dein Datenmodell würde dann aus 2 Tabellen bestehen:
    Tabelle1 enthält die Gruppen mit einer ID und der Bezeichnung
    Tabelle2 enthält die Einzelsätze mit je einer ID einer Beziehung (Zuordnung) zu einer Gruppe (Grupe_ID) und deine Meßwerte oder was auch immer

    Die Ansicht sieht dann so aus, dass du ein Datagridview mit den Gruppen hast und in einem 2. Datagridview stehen die zur ausgewählten Gruppe gehörenden Einzelsätze. Das ganze kann mit 1 Programmzeile als *.xml-Datei gespeichert werden.
    Das Anlegen des Dataset und der Datagridviews erfolgt mit dem Designer durch zusammenklicken der Komponenten in sehr kurzer Zeit ohne 1 Zeile Code. Lediglich das Laden und Speichern muß von hand geschrieben werden.

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    ok. Hmm mal sehen. Da gibts ja den code um die dgv im zebrastyle glänzen zu lassen:

    VB.NET-Quellcode

    1. With DataGridView1.DefaultCellStyle
    2. .BackColor = Color.LightGreen
    3. .ForeColor = Color.DarkBlue
    4. End With
    5. With DataGridView1.AlternatingRowsDefaultCellStyle
    6. .BackColor = Color.LightCyan
    7. .ForeColor = Color.DarkBlue
    8. End With


    könnte man diesen nicht so umbauen das sich nur bei jede 3. Zeile die hintergrund Farbe ändert?
    Diese Lösung würde mir schon reichen

    vierkant schrieb:

    das sich nur bei jede 3. Zeile die hintergrund Farbe ändert?
    Sieh Dir mal CellStyle an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!