2009-08-18 17 views
1

Ich bin sehr neu in der Welt von jQuery und könnte hier eine ziemlich triviale Frage stellen. Ich bin gespannt, was die Community als Best Practice für ein datengebundenes Objekt mit jQuery-Funktionalität ansieht.jQuery in einem Repeater

Als spezifisches Beispiel habe ich derzeit einen Repeater erstellt, der an eine Liste von Objekten gebunden ist. Jedes Objekt hat Eigenschaften wie "Link", "Thumbnail", "Subtext", usw. Dies ist ein kleiner Repeater (< 10 Elemente zu jeder Zeit). Wenn ein Benutzer auf "Verknüpfung" klickt, wird ein separater Bereich der Seite aktualisiert, um das Objekt wiederzugeben.

Die Ansätze, die ich bisher entdeckt haben, beinhalten:

  • dynamisch die notwendige jQuery-Skript aus dem C# Code-Behind Erstellen
  • ein JSON-Dienst erstellen, um die Verbindungsanfrage und senden Sie das Objekt reagieren zu ladende (ein zusätzlicher möglicherweise unnötiger Datenbank-Treffer)
  • Um einen JS Struct innerhalb des C# Code-Behind dynamisch zu erstellen (similar struct)

I Der Hauptgrund, warum ich in diesem Szenario einen JSON-Dienst vermeiden möchte, ist, dass die Objekte bereits einmal gebunden wurden, nachdem sie von der Datenquelle zurückgegeben wurden. Ich bin mir nicht sicher, ob ein weiterer Db-Hit gerechtfertigt ist, aber ich bin offen für alle Vorschläge.

Antwort

1

Das Erstellen des erforderlichen jQuery-Skripts aus dem C# -Codebehind ist möglicherweise nicht erforderlich, da der JQuery-Code nicht geändert werden muss. Bedenken Sie, dass es bei JQuery in erster Linie um unaufdringlichen JS geht.

Ich stelle mir das Stück JS etwas würde wie folgt aussehen:

$('.link-class', '#repeater-id').click(function(){ 
    // Get the id of the link or the target using $(this).attr('id') 
    // Show a page section or call a service using the the discovered ID. 
}); 

Sie den ersten Kommentar können Sie die Daten, die Sie die Daten, die Sie anzeigen möchten identifizieren müssen herauszuziehen.

Der zweite Kommentar kann entweder ein Ajax-Aufruf oder ein Div-Toggle zu einem anderen Abschnitt auf Ihrer Seite sein. Wenn diese Daten groß sind, würde ich geneigt sein, Ajax es. Ansonsten würde ich es auf der Seite behalten und einfach ein- oder ausschalten.

Wenn Sie denken, dass Benutzer eher auf mehrere Links klicken würden, würde ich die Nicht-Ajax-Option ein wenig günstiger gewichten, auch wenn die Seite etwas schwerer wäre. Vor allem, wenn der Benutzer zu einem zuvor angeklickten Link zurückkehren könnte.

Macht das Sinn? Gerne weiter ...

+0

Das macht Sinn und ist elegant für das Click-Ereignis. Es wird nur ein kleiner Teil der Informationen in die Seite geladen, so dass ich nicht darüber sorge, dass ich alles auf einmal laden muss. Eine Frage, die ich habe, ist mit den zusätzlichen Daten, die jedem Objekt beigefügt sind (zB "Subtext"). Im itemdatabound-Ereignis ist item.Subtext leicht verfügbar, aber ich bin nicht sicher, wie diese zusätzlichen Informationen angehängt werden. –

+0

Dies scheint der beste Weg zu sein zu sein, ich füge eine neue Frage hinzu, um das benutzerdefinierte Attributstück anzugehen. Ich bin ein großer Fan von Javascript, das nicht erzeugt werden muss (oder irgendein Code, der für diese Angelegenheit erzeugt wird) –

+0

Hallo Alexis. Danke für das Häkchen :). Mit dem Subtext-Problem würde ich das entweder als ein verstecktes Feld oder ein HTML-Element ausgeben, das ich als versteckt stille. Erstellen Sie dann einen Selektor, der das bei Bedarf finden kann. Möglicherweise ähnlich wie zuvor, var subText = $ ('input # subTextID' + id, '# repeater-id'). Val(); –

0

Ich nehme an, diese Liste hat einige grundlegende Details über einige Elemente und wenn Sie auf einen klicken, sehen Sie mehr Daten über diesen bestimmten Artikel.

Ich würde definitiv wählen Sie eine (dynamische jQuery) oder zwei (JSON-Dienst) abhängig von der Größenunterschiede der gerenderten Seite. Wenn wir einen Unterschied in der Nähe von 10kb sprechen, würde ich mit dynamischer jQuery gehen und einfach alle Daten bereit haben, zu gehen. Wenn es wesentlich mehr ist, verwenden Sie einen JSON-Dienst.

Es ist nichts falsch mit einer zusätzlichen DB-Anfrage und den Verzögerungen, die es beinhaltet, wenn der Benutzer es erwartet. Wenn jemand auf einen Webseiteneintrag klickt, wird es mit einer Verzögerung von weniger als einer halben Sekunde und vielleicht etwas mehr als einer Sekunde in Ordnung sein, wenn Sie nett genug sind, einfach "Bitte warten" zu sagen, dass eine spürbare Verzögerung ist normal.

Verwandte Themen