Laden...

Wie kann ich auf eine Column[x] einer gefilterten Datatable zugreifen?

Erstellt von echdeneth vor 4 Jahren Letzter Beitrag vor 4 Jahren 957 Views
echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren
Wie kann ich auf eine Column[x] einer gefilterten Datatable zugreifen?

Moin,

Ich habe eine DataTable und habe diese für ein DataGrid gefiltert:

dt.DefaultView.RowFilter = string.Join(" AND ", fffilter.ToArray());

Nun möchte ich mit dieser View berechnungen durchführen, aber ich erlange (anscheinend) kein Zugriff auf die Rows, für so eine Sache z.B.:


                DataRow dr;
                offen = 0;
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    dr = dt.Rows[i];
                    if (dr[10].ToString() == "Offen")
                    {
                        _ = decimal.TryParse(dr[9].ToString(), out decimal off);
                        offen += off;
                    }
                }
                Status.Text += offen.ToString("C", CultureInfo.CurrentCulture) + "\n";

MVVM beherrsche ich nicht genügend um damit dasselbe und gewünschte zu erschreiben.

Wäre für Vorschläge weit offen... Danke

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

16.842 Beiträge seit 2008
vor 4 Jahren

Und was ist Deine Frage?

PS: Sei Dir bewusst, dass MVVM eben ein Grundbestandteil in WPF ist.
Bastelst Dir Workarounds, dann endet das meist im Chaos oder löst andere Probleme aus.

5.658 Beiträge seit 2006
vor 4 Jahren

Siehe dazu auch Wie mit ComboBoxen DataGrid filtern?, da gibt es Code-Beispiele

Weeks of programming can save you hours of planning

B
22 Beiträge seit 2018
vor 4 Jahren

Ich weiß nicht ob ich jetzt damit richtig liege. Kann es sein das du nicht auf die Row sondern auf die Column (Spalte) zugreifen möchtest?

Mit diesem Code

dr = dt.Rows[i];

hast du exakt eine Row.

Mit diesem Code

dr[10].ToString() == "Offen"

versuchst du auf das 10 Row Element deiner einen Row zuzugreifen.

Das wird nicht funktionieren 😉

Was funktioniert ist

dr[0].GibMirDenWertAusSpalte[10].ToString() == "Offen"
echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren
dr[10].ToString() == "Offen"  

versuchst du auf das 10 Row Element deiner einen Row zuzugreifen.

mit


DataRow[10].ToString();

greife ich auf den 11. Wert des Array (Datarow) zu

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

B
22 Beiträge seit 2018
vor 4 Jahren

Ui da schäme ich mich ja 🙁

Hast recht war mein Fehler...