3 Stimmen

Gibt es ein JQuery-Tabellen-Plugin, das eine HTML-Tabelle als AJAX-Datenquelle unterstützt?

Ich habe eine Reihe von JQuery-Tabellenplugins zur Bearbeitung meiner Paging- und Sortierungsanforderungen ausgewertet. Ich suche etwas, das es mir ermöglicht, meine Tabellen mit einem AJAX-Aufruf zu paginieren und zu sortieren.

Das Problem, das ich habe, ist, dass alle Plugins, die ich gefunden habe, erwarten, dass der Ajax-Aufruf JSON zurückgibt. Das ist perfekt für einfache Szenarien, aber wenn ich komplexe Formatierungen auf meine Tabellen anwenden möchte, sobald ich möchte, dass meine Tabelle Links oder Symbole oder andere komplexe Darstellungen enthält, stehe ich vor der Herausforderung, serverseitigen Code zu reproduzieren, der diese Links generiert oder das geeignete Symbol auswählt, als Clientseitigen Code, um dasselbe zu tun.

Was ich gerne tun würde, ist die neuen Tabellendaten als HTML-Tabelle zurückzugeben und das Plugin die vorhandene Tabelle durch die zurückgegebene Tabelle ersetzen zu lassen (entweder direkt oder durch Kopieren von Zellen, die Details sind nicht wichtig). Gibt es Empfehlungen für den besten Weg, dies zu tun?

1voto

Brian Punkte 7953

Schau dir http://www.datatables.net/ an, ich denke, das wird deine Bedürfnisse erfüllen :)

Sehr gut ist es auch!

Was die Formatierung durch JSON betrifft, mache ich das ziemlich gerne... stellen Sie einfach sicher, dass Sie alle lustigen Zeichen encodieren und es sollte gut funktionieren.

0voto

Jack Ryan Punkte 8258

Ich habe inzwischen ingrid gefunden und werde es als potenzielle Lösung in Betracht ziehen. Es scheint zu tun, was ich will, obwohl das Aussehen und das Gefühl ziemlich schwer wirken. Ich werde sehen, wie diese Antwort wohl bewertet wird.

0voto

Zoidberg Punkte 9833

Versuchen Sie dies, es stammt von YUI, nicht von JQuery, aber ich denke, es wird genau das tun, was Sie brauchen

http://developer.yahoo.com/yui/examples/datatable/dt_dynamicdata.html

0voto

r00fus Punkte 2384

Für jQuery können mehrere Grids HTML-Tabellen vor Ort ändern. Zwei, die ich verwendet habe, sind flexigrid und jqgrid.

Wenn Sie dies tun, könnten Sie zum Beispiel die HTML-Tabelle über einen Ajax-Aufruf einfügen (falls erforderlich) und dann flexigrid() oder jqgrid() auf die resultierende HTML-Tabelle anwenden.

0voto

Justin Holzer Punkte 2256

Ich denke, Ihre beste Option wird sein, eine Controller-Aktion zu erstellen, die eine Teilansicht zurückgibt, die Ihre Tabelle enthält. Die Teilansicht kann jede JavaScript-basierte Tabelle/Raster enthalten, die Sie möchten. Diese Lösung hat überhaupt keine Abhängigkeit von einer spezifischen Raster-/Tabellenimplementierung.

Zum Beispiel, sagen wir, Sie haben eine stark typisierte Teilansicht vom Typ ViewUserControl> mit dem Namen FooList.ascx

Dann würden Sie eine Aktion in Ihrem Controller definieren, die diese Teilansicht rendert:

// Für die Unterstützung der Seitenzahlung müssten Sie wahrscheinlich diese Aktion ändern, um einen Parameter zu akzeptieren,
// der verwendet werden könnte, um mitzuteilen, welche Datensätze abgerufen werden sollen.
// Dies erforderte auch die entsprechende Route. Dies geht jedoch über
// den Rahmen dieses Beispiels hinaus.
public PartialViewResult List()
{
  // Holen Sie sich die Sammlung der Dinge, die Sie anzeigen möchten
  var items = this.itemRepository.GetItems();

  // geben Sie die Teilansicht zurück
  return PartialView("FooList", items);
}

In Ihrer Ansicht, in der diese Teilansicht verwendet wird, möchten Sie etwas ähnliches wie das Folgende haben...

    <%-- dies setzt voraus, dass eine Sammlung von "items" in Model.Items verfügbar ist --%>
    <% Html.RenderPartial("FooList", Model.Items); %>

<%=
    Ajax.ActionLink
    (
        "Klicken Sie hier, um die Tabelle über AJAX zu aktualisieren!",
        "List",
        new AjaxOptions()
        {
            HttpMethod = "GET",
            LoadingElementId = "FooList"
        }
    )
%>

Alles, was wir hier tun, ist, den ASP.NET MVC AJAX Helper zu verwenden, um einen Link zu erstellen, der eine AJAX GET-Anforderung an die List-Aktion in Ihrem Controller sendet. Außerdem haben wir durch Festlegen der LoadingElementId-Eigenschaft im AjaxOptions-Objekt dem Helper mitgeteilt, dass wir den inneren Inhalt von

mit den Ergebnissen der AJAX-Anforderung ersetzen möchten.

Wenn ein Benutzer auf diesen Link klickt, wird eine AJAX-Anforderung dazu führen, dass Ihre List-Aktion aufgerufen wird. Ihre List-Aktion gibt einfach die gerenderten Inhalte der Teilansicht FooList.ascx zurück. Die vorhandenen Inhalte des

werden durch die Inhalte ersetzt, die aus der AJAX-Anforderung abgerufen wurden. Im obigen Beispiel wählt die Controller-Aktion immer dieselben Daten aus, was eigentlich nicht das ist, was Sie wollen. In einem echten Szenario müssten Sie die Controller-Aktion ändern, um die entsprechenden Daten für Ihre Teilansicht abzurufen. Ohne die Details Ihrer Implementierung zu kennen, könnte ich Ihnen keinen effektiven Weg vorschlagen, wie Sie das handhaben können.

Wenn Sie keinen Link verwenden möchten, schauen Sie sich einfach den von der Ajax.ActionLink-Hilfsmethode generierten HTML- und JavaScript-Code an und passen Sie ihn Ihren eigenen Bedürfnissen an. Zum Beispiel, erstellen Sie Ihre eigene benutzerdefinierte Hilfsmethode oder schreiben Sie einfach manuell den JavaScript-Code.

Zuletzt, vergessen Sie nicht, die MVC AJAX JavaScript-Quelldateien einzuschließen. Ich empfehle, sie in Ihrer Masterseite einzuschließen. Zum Beispiel:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X