Laden...

Nachladbare Liste mit AJAX

Erstellt von T-Man vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.153 Views
T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 12 Jahren
Nachladbare Liste mit AJAX

Moin zusammen!

Ich habe eine wie ich denke einfache Aufgabe und sehe wahrscheinlich den Wald vor lauter Bäumen nicht.

Meine Webanwendung ist mit einem Explorer zu vergleichen. Es gibt zwei Spalten. Links werden Ordner und Dateien angezeigt, rechts Details.
Klicke ich auf eine Datei, wird die rechte seite aktualisiert (die Details zur Datei werden rechts angezeigt).
Beim Klick auf einen Ordner wird die linke Seite aktualisiert. Unterordner und Dateien des gewählten Ordners werden links angezeigt.
Hierfür benutze ich UpdatePanels um nicht immer alles neu zu laden.
Nun zeige ich links allerdings nicht alle Einträge an, sondern nur die ersten 20. Wenn es mehr gibt, kommt darunter ein Link "weitere Elemente nachladen".
Beim Klick auf diesen Link sollen die nächsten 20 Einträge in der linken Liste hinzugefügt werden. Ich habe mir das Ajax Control Toolkit angesehen, finde aber kein Control, das dafür gedacht zu sein scheint. Mit DynamicPopulate ersetzt man Inhalte, aber lädt nicht welche dazu, oder verstehe ich da was falsch? Kann mir jemand sagen, mit welchem Control das geht? Gibt es irgendwo ein gutes Beispiel?
Habe jetzt schon 'ne weile gegoogelt, aber ich scheine wohl nicht die richtigen Begriffe zu verwenden, jedenfalls finde ich nichts gescheites...
Wenn die letzten Elemente nachgeladen wurden, soll optimalerweise der Link verschwinden.
Blättern würde mit einem UpdatePanel gehen, aber das soll es nicht sein. Es sollen bei Bedarf weitere Elemente nachgeladen werden, ohne das die bisherigen verschwinden.

Vielen Dank und Gruß
T-Man

D
615 Beiträge seit 2009
vor 12 Jahren

Hallo T-Man

Die ersten 20 Einträge speicherst du ja z.B in Context.FolderAndFileItems.
Wird nun auf den Link "weitere nachladen" geklickt könntest du folgendes tun :

=> Database.FolderAndFileItems.Skip(Context.FolderAndFileItems.Count).Take(20);
(anzahl geladene skippen, die nächsten 20 nehmen)

Das Resultat kannst du Deinem Context.FolderAndFileItems hinzufügen.

Beste Grüsse

Diräkt

T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 12 Jahren

Hallo Diräkt,

ich möchte nicht die linke Seite komplett mit den 20 weiteren Elementen neu übertragen. Ich möchte per Ajax 20 Elemente nachladen und einfügen.

Gruß
T-Man

16.806 Beiträge seit 2008
vor 12 Jahren

Ja, das hat er Dir erklärt. Du weißt Client-seitig welche/wie viele Einträge Du hast. Du gibst nun dem Server via Ajax die Info, dass Du zB 80 bereits hast (Skip) und willst weitere 20 (Take).

T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 12 Jahren

Und von welchem Control redet Ihr da?

Vielleicht hätte ich noch erwähnen sollen, das ich mit asp.net arbeite?

Ich habe ein UserControl in dem ich im PageLoad 20 Datensätze Lade und daraus Controls generiere, die ich in das UserControl einbette.
Nun möchte ich wie beschrieben per AJAX weitere nachladen können und weiß leider nicht was für ein Control ich dafür verwenden soll...

Gruß
T-Man

16.806 Beiträge seit 2008
vor 12 Jahren

Mir ist durchaus bewusst, dass Du mit ASP.NET WebForms arbeitest. Wenn das Control das nicht unterstützt, dann musst Du Dir eben ein eigenes Control bauen - oder direkt mit jQuery arbeiten.

T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 12 Jahren

Ich kann mir einfach nicht vorstellen, dass es kein Ajax-Control gibt, mit dem man genau das machen kann. Das ist doch keine exotische sondern eher eine alltägliche Anforderung, die ich da habe. Da kann es doch nicht wirklich sein, dass ich mir da was selber schustern muss. Da kann ich ja gleich noch eben das Rad neu erfinden...

16.806 Beiträge seit 2008
vor 12 Jahren

Eine "Paging"-Funktion nutzt man - eigentlich - nur bei Tabellen.
Asynchronen Aufbau von Daten, zB einer TreeView, ist auch nicht ungewöhnlich - wie in Deinem Fall.

Wenn man aber WebForms einsetzt muss man sich die meisten Controls eben selbst basteln, weil man keinen direkten Zugriff auf die Mechanismen hat.

WebForms ist aber nicht dazu entwickelt worden, um RIAs zu erstellen. Dafür gibt es MVC, das darauf ausgelegt ist. Und das Feature, das Du haben willst, gehört definitiv in die Kategorie RIA; Du setzt also meiner Meinung nicht die falsche, aber eine suboptimale Technologie für Dein Vorhaben ein.

T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 12 Jahren

Danke für den Tip. Ich sollte mich also mit MVC befassen!? Kennst Du da ein gutes Tutorial? Ist das wesentlich anders als asp.net? Kann man das kombinieren?
Und ich hatte gehofft es ginge mit asp.net und ajax.

Gruß
T-Man

16.806 Beiträge seit 2008
vor 12 Jahren

So wie es mir scheint, hast Du noch nicht wirklich verstanden, was ASP.NET ist - geschweige denn AJAX.

ASP.NET hat zwei Varianten: ein mal das Event-basierte WebForms, und ein mal das Request-basierte MVC. Beides ist dennoch ASP.NET. Eine Kombination ist möglich - aber nicht sinnvoll.

Tutorials gibt es zwei ganz gute. Ein mal http://www.nerddinner.com und ein mal http://mvcmusicstore.codeplex.com/.
Es sei aber dazu gesagt, dass jemand der WebForms kann, nicht unbedint MVC direkt versteht. Genauso anders herum. Ich zB kenn das MVC aus dem FF - kann aber mit WebForms einfach nichts anfangen, da der Entwicklungszyklus eher dem von Windows Forms ähnelt, als standardisierten HTML/HTTP-Definitionen.

WebForms ist auf alle Fälle keine Technologie für RIAs.
Mit MVC kannst Du im Gegensatz zu WebForms direkt auf die Erstellung des HTML-Codes Einfluss nehmen. Du hast dadurch zwar ca. 15% mehr Code-Aufwand; aber kannst aufgrund der Erweiterungsmöglichkeiten von MVC eben auch Dinge sehr einfach realisieren, die mit WebForms nicht oder nur sehr schwer möglich sind.

AJAX ist zudem nur eine Ansammlung bzw. Zusammenschluss von bereits existierenden Technologien: JavaScript und XML. Beides ist schon immer im Web-Umfeld vorhanden gewesen; nun eben als kombinierte Technologie.