[Entity Framework / ASP.net / C#] - Performantere Listview


Blackhawk50000

Erfahrenes Mitglied
Hallöchen,

Ich möchte heute eine Frage stellen, wie ich meine Listview performanter gestalten kann.
Dazu mein bisheriges Vorgehen und mein Ziel, das ich habe. Plus das ein oder andere Problem auf das ich bereits gestoßen bin.
Fangen wir an mit dem

Ist-Zustand:
Ich habe eine Page. Auf dieser Page ist eine Listview und eine Datasource. Die Datasorce holt eine Liste von Pfaden aus einer SQL - Datenbank. Diese Pfade zeigen auf einen Ordner in dem sich Bilder verbergen.
Beim Databinding - Event der Listview wird nun einiges gemacht. Jedes Bild das der eingeloggte Benutzer gerade aufrufen will, wird überprüft, und anhand bestimmter Kriterien die dem Benutzer inne sind, dargestellt. Mal Verschlüsselt, mal verlogot :D.
Diese dafür notwendigen Routinen gibt es alle schon und die funktionieren. Ferner muss noch erwähnt werden, dass natürlich nicht das mehrere MB große Bild direkt, sondern nur ein herunter gerechnetes Thumbnail hier verwendet wird.
Anhand eines Buttons, der in jedem Listview-Item und somit unter jedem Bild zu finden ist, dass noch verschlüsselt ist, kann der Benutzer dies nun entschlüsseln lassen. Dazu wird dann in seinen Eigenschaften gespeichert dass das Bild Z in Galerie F nun für diesen Benutzer frei ist. Anschließend wird die Anzahl an freigegebenen Bildern neu Berechnet und in einer Statusleiste in der Masterpage dargestellt.

All das Funktioniert nun schon, allerdings unperformant..

Das Problem:
Das Berechnen uns anzeigen der freigegeben Bilderanzahl auf der Masterpage geschieht BEVOR ich im Button-Click-Event der Page den Datenbankeintrag machen muss. Die neuen Daten werden erst angezeigt, wenn ich die ganze Seite erneut lade.
Der problematische Ablauf:

Masterpage_Load:
Berechnen der Anzahl der freigeschalteten Bilder des Benutzers
ButtonClick:
Select des gewählten Items und Aktion festlegen (freischalten)
ItemSelected:
ID des selektierten Items in der Datenbank für den Benutzer als freigegeben Speichern
aufrufen von Listview.DataBind() um die Items zu aktualisieren und dem Benutzer das Bild als Freigeschaltet darzustellen.
anschließend neu laden der Page durch.. (diese blöde Zeile vergesse ich immer wieder. irgendwas mit "Response" oder so)
damit die Masterpage das berechnen der Anzahl der freigegebenen Bilder nochmal macht.


Meine Überlegung / Vorstellung / Hoffnung / Frage :

ich habe mir überlegt, ob es nicht möglich ist irgendwie nur ein ListView-Item neu zu laden.
Oder hat jemand jetzt beim Lesen schon den so genannten "facepalm" hinter sich, und sagt sich... Junge du machst ja alles FALSCH... las Daddy mal ran.
Dann bin ich sehr über eure Ratschläge gespannt.


PS: Da ich gerade auf Arbeit bin, kann ich leider keinen Code einreichen... Ich wüsste gerade auch nicht wirklich welchen da es soooo viel ist. Aber auf Anfrage nach bestimmten Teilen, reiche ich den heute Abend gerne ein wenn ich zuhause und am Code bin.

Liebe Grüße und großes Danke im Voraus...
Kevin