ASP.Net: Wie fügt man einem Repeater Zeilen mit DOM/Javascript hinzu?

Ich weiß, dass der asp.net Repeater kein Client-seitiges Objektmodell hat, und wir sind dabei, die Leistung vieler Seiten zu verbessern, die Repeater/Gridview mit der Funktionalität haben, ihnen Zeilen durch serverseitigen Code hinzuzufügen.

Wir haben Updatepanels verwendet, um die Funktionalität zu ajaxify hinzufügen die Zeilen zum Repeater / Gridview, aber die Zeit, die es für den Server-Trip und Rendering zurück im Browser dauert, ist nicht akzeptabel.

Gibt es eine Möglichkeit, dies auf der Clientseite zu tun, um die Leistung des Hinzufügens von Zeilen zum Repeater/Gridview zu verbessern. Wir verwenden Asp.net 2.0

Antwort auf "ASP.Net: Wie fügt man einem Repeater Zeilen mit DOM/Javascript hinzu? " 2 von antworten

UpdatePanels führen immer noch ein ganzseitiges Postback aus und aktualisieren sie dann einfach, was sich im Bedienfeld befindet. Das ist, woher Ihre Verlangsamung kommt.

Wie bei der Verwendung von AJAX, um die Dinge zu beschleunigen, sollten Sie direkte AJAX-Aufrufe verwenden, um nur die Daten anzufordern, die Sie benötigen. Sie können dies mit ASP.NET AJAX tun.

Registrieren Sie im page_load-Ereignishandler Ihren AJAX. (VB.NET)

Ajax.Utility.RegisterTypeForAJAX(GetType(ThisPageClass))

Erstellen Sie dann eine Funktion, die von AJAX zugänglich sein wird, wie so:

<Ajax.AjaxMethod()> _
Public Function GetNewRows() As String
    ''//do stuff
    Return jsonObj
End Function

Dann, auf der Client-Seite, können Sie es so nennen:

ThisPageClass.GetNewRows(someCallbackFunction);

function someCallbackFunction(result) {
    var json = ParseJSON(result.value);
    for(var i=0; i<json.length; i++) {
        // do whatever
    }
}

Sie müssen nur die Löcher stecken!

Ich habe herausgefunden, dass das Repeater-Steuerelement kein DOM hat, das verwendet werden kann, um Client-seitige Operationen wie das Hinzufügen von Zeilen und Sachen zu tun, der einzige einfache Ausweg (aufgrund einiger Einschränkungen) ich hatte, war, das GridView-Steuerelement stattdessen zu verwenden und dann sein DOM zu verwenden, und das ist, was ich schließlich tat.