Laden...

Ergebnisse Datenbankabfrage in ein listview setzen (wpf)

7 Antworten
1,402 Aufrufe
Letzter Beitrag: vor 2 Jahren
Ergebnisse Datenbankabfrage in ein listview setzen (wpf)

Hi, ich habe es bereits geschafft mit einer linq-Abfrage mir Daten zu holen und sie in einem listview darzustellen. Eine Spalte (DateTime) möchte als String in einem anderen Format darstellen. Wie mache ich das?

Hier mein code:

            var context = new EDM_ORContainer();

            var query = from rows in context.Orders

                        where rows.OrderStatus == 1 || rows.OrderStatus == 2 || rows.OrderStatus == 3
                        orderby rows.OrderNumber descending
                        select new 
                        {

                            OrderNumberFormatted = rows.OrderNumberFormatted,
                            OrderDescription = rows.OrderDescription,

                            StartDate = rows.StartDate,

                        };

            
            var results = query.ToList();


            lv_OR.ItemsSource = results;

Hallo.

Bevor du weitermachst, schau dir unbedingt diesen Artikel an: https://mycsharp.de/forum/threads/118261/artikel-mvvm-und-databinding! WPF und MVVM gehören zusammen. Du machst es dir sonst unnötig schwierig.

  • Wer lesen kann, ist klar im Vorteil
  • Meistens sitzt der Fehler vorm Monitor
  • "Geht nicht" ist keine Fehlermeldung!
  • "Ich kann programmieren" != "Ich habe den Code bei Google gefunden"

GidF

den kenne ich schon, danke.

meine lösung wäre praktisch ein workaround, also praktisch erst alle Ergebnisse in einer Liste speichern und anschließend stück für stück das list view füllen. Aber das ist halt wieder etwas ressourcenlastig, bei großen Datenmengen dauert es auf jeden Fall ein paar Sekunden bis das Listview geladen ist.

ich wollte nur mal nachfragen ob es vielleicht eine "elegantere" Lösung gibt?

Ja, a) via MVVM und b) zB mit einer Umsetzung von Infinity Scroll, sodass immer nur ein Chunk von Daten geladen wird ⇒ schneller

Hallo holzhaus2022

MVVM und Datenbinding ist auf jeden Fall der elegantere Weg 😛

Wenn dich die Ladezeit stört, kannst du ja erstmal ein paar Daten laden und dann den Rest nachladen.
Es ist ausserdem fraglich ob jemand in einer Listbox zig-tausende Einträge haben will.
Unter dem Stichwort Paging findest du eventuell was passendes.

Gruss
Alf

ok, es könnte sein, dass ich im Thema MVVM noch nicht so fit bin. Wie könnte ich denn den Fall mit MVVM lösen?

Databindung und so verstehe ich schon, aber ich möchte ja das Format von allen Werten der ganzen Spalte ändern.

Infinity Scroll ist auch ein guter Ansatz, danke!