Ich habe eine Seite mit einem Teil eines ListView-Steuerelements in einem Update-Panel. Wenn eine Schaltfläche in der Listenansicht geklickt wird, ändere ich einige Daten und rufe this.databind auf, um die Daten zu aktualisieren. Es scheint, dass das Seitenladeereignis weiterhin ausgelöst wird, obwohl sich das Steuerelement in einem Update-Fenster befindet. Ich frage mich, warum das Seitenlade-Ereignis ausgelöst wird? Liegt das an dem Aufruf von this.databind für das Ereignis listview_onitemcommand?Wird das Ereignis zum Laden der Seite weiterhin ausgelöst, wenn sich ein Steuerelement in einem Aktualisierungsfenster befindet?
Antwort
Ein UpdatePanel ruft einen gesamten Anforderungslebenszyklus auf dem Server auf. Es ist genau so, als hätten Sie auf eine normale synchrone Seite geklickt. OnInit, OnLoad, Click_Handler und Render werden ausgeführt. Die gesamte Seite wird in HTML gerendert und über den AJAX-Aufruf des UpdatePanels zurück an den Browser gesendet. Der einzige Unterschied besteht darin, dass, wenn das UpdatePanel die Ergebnisse (die gesamte HTML-Ausgabe Ihrer Seite, wie normal) empfängt, nur den für sich relevanten Teil ausschneidet und das DOM durch diesen ersetzt und den Rest wegwirft. (Es ist auch Updates/ersetzt den Viewstate)
Wenn Sie die Update loszuwerden, empfehle ich das Lesen this article
Ich denke immer der Update los war der wunderbarste Ajax Entscheidung, die ich je gemacht habe.
Das UpdatePanel hat seine Fehler, aber Ihr Artikel ist zu Unrecht spöttisch und berücksichtigt nicht die Möglichkeit, dass ein UP ein sehr vernünftiges Werkzeug ist, um einige Dinge schnell zu erledigen. –
Immer wenn ich das Updatepanel benutzt habe, habe ich es immer gehasst. Ja, es macht wirklich meine Nudeln. Wenn Sie es immer noch benutzen, tut es mir irgendwie leid für Ihre Projekte. –
ziemlich altes Thema, aber das ist wirklich idiotisch, jemanden zu bedauern, der weiß, was er tut. Ich glaube, Sie werden genug auf Ihrem Teller haben, um sich zu entschuldigen. Niemand braucht dein Mitleid. – Vikas
nicht ganz, die Rendermethode wird nur für die Steuerelemente in allen Aktualisierungsfenstern aufgerufen, die für die aktuelle Anforderung aktualisiert werden. Daher wird der gesamte HTML-Code für eine Seite nicht zurück an den Client gesendet. – Daniel