Die gesamte Seite wird aktualisiert, obwohl sich die Rasteransicht in einem Aktualisierungsfenster befindet

StackOverflow https://stackoverflow.com/questions/34798

Frage

Ich habe eine Rasteransicht, die sich in einem Updatepanel für ein modales Popup befindet, das ich auf einer Seite habe.
Das Problem besteht darin, dass die gesamte Seite jedes Mal aktualisiert wird, wenn ich auf eine Bildschaltfläche in meiner Rasteransicht klicke.Dadurch wird meine gesamte Seite geladen und da ich den Rest der Seite ausgegraut habe, sodass der Benutzer nicht darauf klicken kann, ist das sehr ärgerlich.

Weiß jemand, was mir fehlt?

Bearbeiten: Ich habe unten eine bessere Lösung eingegeben

War es hilfreich?

Lösung 5

Einige Monate später wurde dieses Problem behoben.Das Projekt, an dem ich gearbeitet habe, war eine frühere Version 1.1, die mit 2.0 konvertiert wurde.In der web.config blieb jedoch diese Zeile übrig:

<xhtmlConformance mode="Legacy"/>

Als es auskommentiert wurde, verschwanden alle Fehler, die wir anscheinend mit dem Ajax-Steuerungs-Toolkit hatten

Andere Tipps

Stellen Sie sicher, dass im UpdatePanel Folgendes eingestellt ist:ChildrenAsTriggers=false und UpdateMode=Conditional

Haben Sie ChildrenAsTriggers="false" im UpdatePanel?

Gibt es Javascript-Fehler auf der Seite?

Ich hatte dieses Problem und bin auf folgenden Artikel gestoßen:

http://bloggingabout.net/blogs/rick/archive/2008/04/02/linkbutton-inside-updatepanel-results-in-full-postback-updatepanel-not-triggered.aspx

Meine Schaltfläche wurde nicht wie in diesem Beispiel dynamisch im Code erstellt, aber als ich den Code im ASPX überprüfte, fehlte mit Sicherheit eine ID-Eigenschaft.Beim Hinzufügen der ID wurde das Postback asynchron und begann sich wie erwartet zu verhalten.

Überprüfen Sie also zusammenfassend, ob Ihr Button eine ID hat!

Testen Sie in Firefox oder IE?Wir haben ein ähnliches Problem, bei dem die gesamte Seite in Firefox (aber nicht im IE) aktualisiert wird.Um dies zu umgehen, verwenden wir einen versteckten asp:button mit dem Satz useSubmitBehavior="false".

<asp:Button ID="btnRefresh" runat="server" OnClick="btnRefresh_Click" Style="display: none" UseSubmitBehavior="false" />

Wird das modale Fenster über das IE-modale Fenster geöffnet?Oder ist es ein DIV, den Sie anzeigen?

Wenn es sich um ein IE Modal Pop-up handelt, müssen Sie sicherstellen, dass dies der Fall ist

   <base target="_self" /> 

Um sicherzustellen, dass der Beitrag auf der modalen Seite zurückgesendet wird.

Wenn es sich um ein DIV handelt, stellen Sie sicher, dass Ihr XHTML korrekt ist, da es sonst möglicherweise nicht weiß, was aktualisiert werden soll.

Ich würde den onClick belassen und ihn als Auslöser für das updatePanel festlegen.

Das ist seltsam, dass es in FF und nicht im IE funktioniert.Das ist das Gegenteil von dem Verhalten, das wir erleben.

UpdatePanels können empfindlich auf fehlerhaftes HTML reagieren.Führen Sie in Ihrem Browser eine Ansichtsquelle aus und lassen Sie sie durch etwas wie den W3C-Validator laufen, um nach seltsamen Dingen zu suchen (nicht geschlossene Divs oder Tabellen sind die üblichen Verdächtigen).

Wenn Sie Firefox verwenden, gibt es eine HTML-Validator-Erweiterung/ein Add-On, das recht gut funktioniert.

Als Referenz..

Mir ist es auch aufgefallen, als ich das gefürchtete benutzt habe <asp:UpdatePanel ... /> Und <asp:LinkButton ... />, das sowie UpdateMode="Conditional" auf der UpdatePanel Folgende weitere Änderungen sind erforderlich:

  • ViewStateMode="Enabled" ist erforderlich <asp:Content ... /> (Ich habe es eingestellt auf Disabled im MasterPage)
  • ClientIDMode="Static" musste entfernt werden <%@ Page ... />

Um Postbacks zu verhindern, fügen Sie return false zum onclick-Ereignis hinzu.

button.attribute.add("onclick","return false;");

Probe:

string PopupURL = Common.GetAppPopupPath() + "Popups/StockChart.aspx?s=" + symbol;
hlLargeChart.Attributes.Add("onclick", String.Format("ShowPopupStdControls(PCStockChartWindow,'{0}');return false;", PopupURL));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top