Laden...

DGV Auswertung über veschachtelte for-Schleife

Erstellt von Omega vor einem Jahr Letzter Beitrag vor einem Jahr 589 Views
Omega Themenstarter:in
5 Beiträge seit 2021
vor einem Jahr
DGV Auswertung über veschachtelte for-Schleife

Hallo Community,

ich stehe mit einer Schleife etwas auf dem Schlauch und finde keinen brauchbaren Weg, um das Problem zu lösen. Es geht um das Bereitstellen von Daten die dann für einen Sammelduck verwendet werden sollen. Die DataGridView stellt bereits gefilterte Daten, zur Verfügung und soll über eine verschachtelte for-Schleife wie Folgt ausgelesen werden.

DataGridView:

T1 | 1 | 1001 | 2.80 T1 | 1 | 1001 | 6.20 T2 | 2 | 1002 | 3.20 T3 | 3 | 1003 | 6.10 T1 | 1 | 1001 | 3.80

Die DGV soll wie folgt ausgewertet werden. Alle Beträge in Spalte[3] sollen spezifisch dem jeweiligen String in Spalte[0] zugeordnet werden.
Als Beispiel:
T1
2.80
6.20
3.80

T2  
3.20  
  
T3  
6.10  

Aber das will nicht so richtig.


foreach (DataGridViewRow row in dataGridViewPrint.Rows)
{
     if (Convert.ToString(row.Cells[0].Value) == "T1")
     {
           richTextBoxSammeldruck.AppendText(row.Cells[0.Value.ToString() + "\n");                   
     }
}

Output, schon mal alle T1


for (int i = 0; i < dataGridViewPrint.Rows.Count -1; i++)
{
     if (dataGridViewPrint.Rows[i].Cells[0].Value.ToString() == "T1")
     {
          for (int j = 0; j < dataGridViewPrint.Columns.Count -1; j++)
          {
                richTextBoxSammeldruck.AppendText(dataGridViewPrint.Rows[j].Cells[3].Value.ToString() + "\n");
          }
          break;
      }
}

Output, aber die falschen Beträge...

Vielen Dank für die Hilfe!

16.834 Beiträge seit 2008
vor einem Jahr

Arbeite mit Datenbindung.

Das heisst, dass Du alle Informationen in Objekten hast.
Das DGV ist dann nur noch die Darstellung dessen.

Wenn Du die Daten an weiterer Stelle brauchst, dann arbeitest Du nicht mit dem DGV, sondern mit Deinen Objekten.
Auf dieser Basis funktionieren Pattern wie MVU, MVVM, MVP und ist die Grundlage für Software Architektur.
[Artikel] Drei-Schichten-Architektur

Omega Themenstarter:in
5 Beiträge seit 2021
vor einem Jahr

Hallo Abt,

Vielen Dank für die schnelle Antwort. Das habe ich mir auch schon durch den Kopf gehen lassen, doch generiere ich dadurch nicht zu viel unnötigen Code, um es letztlich nicht doch einfacher lösen zu können? Viel mehr als diese paar Werte brauche ich eigentlich nicht.

16.834 Beiträge seit 2008
vor einem Jahr

Arbeite mit Datenbindung.

.. wäre Software Entwicklung, wie es Software Architektur, die Runtime .NET und Technologien wie WinForms vorsehen.

Hingegen was Du hast, ist Spaghetti-Code auf Bastler-Niveau 😉
Das mag für Mini Tools noch funktionieren und pragmatisch erachtet sein, aber bei professioneller Entwicklung hat das eigentlich nichts zu suchen.
"Unnötig viel Code" ist daher eine relative Aussage, was man eigentlich erreichen will und in welchem Umfeld man arbeitet bzw. das Projekt darstellt.
Zusätzlich ist WinForms hier einfach auch gnädig, dass Du so Spaghetti-Code überhaupt machen kannst. WPF würde Dir das passiv um die Ohren werfen, in dem es Dir Dein Entwicklerleben schwer und unangenehm macht, wenn Du meinst mit solchen Ansätzen zu entwickeln 🙂

Das Ziel, klar, kannst auch mir Spaghetti-Code erreichen.
Welche Werte in den jeweiligen Zellen / Zeilen stecken, musst aber selbst rausfinden. Das kann Dir hier niemand abnehmen.
-> [Artikel] Debugger: Wie verwende ich den von Visual Studio?

4.939 Beiträge seit 2008
vor einem Jahr

@Omega: Was willst du mit der inneren Schleife erreichen (mit Spaltenzähler j greifst du auf die Rows zu)?

Omega Themenstarter:in
5 Beiträge seit 2021
vor einem Jahr

Ja, da hast Du natürlich absolut Recht. Ich kenne "BindingSource to bind a list to a DataGridView", umgekehrt will es aber gerade nicht so richtig. Aber wird schon noch klappen. Jedenfalls danke für den Tipp.