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.
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!
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
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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.
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?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
@Omega: Was willst du mit der inneren Schleife erreichen (mit Spaltenzähler j
greifst du auf die Rows
zu)?
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.