Mehrere doppelte DataGridView Zeilen in eine Zeile

  • C#

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Mehrere doppelte DataGridView Zeilen in eine Zeile

    Hallo :)

    Ich schreibe derzeit ein Programm, welches Daten aus einer Oracle Datenbank holt und diese dann in einem DataGridView anzeigt.
    Per klick auf einen Button kann dieses DataGrid als CSV-Datei exportiert werden.

    Das Problem jedoch ist, mehrere male, habe ich Zeilen die die selbe ID haben, aber unterschiedliche werte.

    <-- So sieht es im moment aus.

    <-- So sollte es aussehen

    Ich habe dabei an eine Foreach-Schleife gedacht, wo abgefragt wird, ob eine ID mehrfach enthalten ist und wenn ja die Daten dann zusammengeschoben werden und mit einem "," getrennt werden.
    Habe da aber leider eher wenig Erfahrung :/

    Das ist der Quellcode bisher zum Exportieren:

    C#-Quellcode

    1. private void DataGridInCSVExport(object sender, EventArgs e)
    2. {
    3. if (dataGridViewErgebnis.Rows.Count == 0)
    4. {
    5. return;
    6. }
    7. StringBuilder stringBuilder = new StringBuilder();
    8. string spaltenKopf = "";
    9. for (int i = 0; i < dataGridViewErgebnis.Columns.Count; i++)
    10. {
    11. spaltenKopf += dataGridViewErgebnis.Columns[i].Name + ";";
    12. }
    13. stringBuilder.Append(spaltenKopf + Environment.NewLine);
    14. foreach (DataGridViewRow dataGridViewRow in dataGridViewErgebnis.Rows)
    15. {
    16. if (!dataGridViewRow.IsNewRow)
    17. {
    18. for (int c = 0; c < dataGridViewRow.Cells.Count; c++)
    19. {
    20. //Eigentlich müsste er doch genau hier das machen... macht es aber nicht :/
    21. stringBuilder.Append(dataGridViewRow.Cells[c].FormattedValue + ";");
    22. }
    23. stringBuilder.Append(Environment.NewLine);
    24. }
    25. }
    26. SaveFileDialog saveFileDialog = new SaveFileDialog();
    27. saveFileDialog.Filter = "CSV files (*.csv)|*.csv";
    28. if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    29. {
    30. using (System.IO.StreamWriter sw = new System.IO.StreamWriter(saveFileDialog.FileName, false, Encoding.UTF8))
    31. {
    32. sw.WriteLine(stringBuilder.ToString());
    33. MessageBox.Show("CSV file saved.");
    34. }
    35. }
    36. }
    dir ist schon klar, dasses höchst unanständig ist, mehrere Datenwerte in eine csv-Zelle zu stopfen?
    Solch "Datenmansche" ist maschinell kaum noch auswertbar.
    1. Ansonsten wäre gut ein Bild vom DGV, was exportiert werden soll.
    2. Noch besser wäre, es gäbe eine DataTable, an die das DGV gebunden ist.
    3. Noch besser, der Name dieser DataTable wäre bekannt, sowie die SpaltenNamen
    4. Noch bessser, es wäre eine typisierte DataTable in einem typisierten Dataset.
    5. Da könntest du einen Screenshot des Dataset-Designers posten, und dann könnte man den csv-export auf höchst elegante Weise abhandeln.
    Also guckma, inwieweit du diesen meinen Wünschen entgegenkommen kannst - ich weiss ja nicht, was bei dir konkret gegeben ist.