Grosse Anzahl an Datensätze in einem ListCtrl darstellen

bukem

Mitglied
Hi,

ich habe ein Listenctrl (als liste) in einen dialog, das ganze ist eine sdi anwendung.
die liste zeigt ca 400 datensätze sichtbar an.
jenach dem was der user in der maske auswählt werden in den listenelement bis zu 8000
datensätze dargestellt.

wie gehe ich vor um die darstellung zu optimieren.
zur zeit lade ich alle datensätze auf einmal aus der datenbank und stelle sie im listenelement dar. prob laufzeit ( aceess2003 datenbank bleibt dabei stehen, mysql ca. 8 sec. alles local)

welche besser lösungen gibt es bei der darstellung von grossen datenmengen in einem listenelment?

danke in vorraus.


bukem
 
Do kannst dem ListCtrl die Eigenschaft 'Besitzerdaten' geben. Dann mußt Du einen Nachrichtenhandler für die 'LVN_GETDISPINFO' - Nachricht anlegen. Der wird für jedes Item aufgerufen, das angezeigt werden soll. Da kannst Du dann die Daten für das Item übergeben.
Um das zu beschleunigen, kannst Du sconmal eine bestimmte Menge an Daten, die wahrscheinlich demnächst dargestellt werden sollen, im Voraus aus der DB in den Speicher laden.
 
hi jokey2,

erst mal danke

du meinst die möglichkeit eine virtual list zu erstellen.
die möglich habe ich mir mal angeschaut, nur komm ich da nicht so richtig weiter.

kannst du vieleicht ein wenig code posten, wich würde es interresieren wie man an so ein theme rangeht.

z.b.
in der messgae 'LVN_GETDISPINFO' kann ich abfragen welches item oder sub item die liste habe will, wenn ich vorher die anzahl festlege.

nur wie komme ich dort an die datensätze?

wie ist es mit der scrollleiste der liste ? wenn ich in der virtual list die voll anzahl der datensätze eingeben z.b 8000 dann ist es auch nicht schneller...
aber die scrollleiste unterscheidet sich von der anschicht her ob 100 oder 8000 item in der liste sehen sollen, für den benutzer soll es ersichtlich sein das noch weiter datensätze gibt.

ich stehe da ein wienig auf dem schlauch von der logic her.

danke

bukem
 
Tut mir leid, ich habe leider keinen Code dafür da. Und extra was zu schreiben ist jetzt zu aufwendig, dazu habe ich jetzt keine Zeit. Aber vielleicht hat ja jemand Anderes da noch was.
 
Zurück