4 Stimmen

Kann das zweite Update-Panel nicht aktualisieren

Ich habe 3 Updatepanels auf meiner Seite und möchte, dass 2 von ihnen aktualisiert werden, wenn ein Ereignis ausgelöst wird. In einem der Updatepanels habe ich eine asp-ReoderList.

                                <%--set the class to inactiveAlert if the active flag is set to false--%>
                                " class="<%# Convert.ToBoolean(Eval("Active")) ? "" : "inactiveAlert" %>" onclick="updateAlertPreview('<%# Eval("ItemID")%>','<%# Eval("Priority")%>','<%# Eval("Title") %>','<%# Eval("Description") %>', '<%# Eval("StartDate") %>', '<%# Eval("EndDate")  %>', '<%# Eval("Image") %>');">

Aktuell wird dieses Updatepanel entweder aktualisiert, wenn die Elemente neu geordnet werden oder sich der Kontrollkästchenstatus ändert. Nun habe ich dieses zweite UpdatePanel, das nicht aktualisiert wird, wenn die Liste neu geordnet wird.

Hier ist mein Code-Behind:

    protected void rlAlerts_ItemReorder(object sender, AjaxControlToolkit.ReorderListItemReorderEventArgs e)
        {
           .....
           Session["AlertOrderChangedNotification"] = Resources.LocalizedText.Alert_Order_Changed;

            lblOrderChangedNotification.Text = "AWESOME";
            //lblOrderChangedNotification.DataBind();
            //UpdatePanelAlertOrderNotification.Update();
}

Ich habe den Code durchlaufen, kann aber nicht herausfinden, warum es nicht funktioniert.

Was ich versucht habe: Ich habe versucht: das UpdateMode von UpdatePanelAlertOrderNotification auf "always" zu setzen. das UpdateMode von UpdatePanelAlertOrderNotification auf "Conditional" zu belassen, seine Auslöser zu entfernen und die Funktion im Code-Behind direkt aktualisieren zu lassen. den Text in der Sitzung zu speichern und beim Seitenposten zu überprüfen, ob Text in der Sitzung ist. Ich kann über diesen Code im PageLoad springen und es passiert immer noch nichts. (Habe es mit beiden Zeilen auskommentiert und dann mit nur 1, dann mit keiner von ihnen auskommentiert, ausprobiert)

protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["AlertOrderChangedNotification"] != null)
            {
                lblOrderChangedNotification.Text = Session["AlertOrderChangedNotification"] as string;
                //lblOrderChangedNotification.DataBind();
                //UpdatePanelAlertOrderNotification.Update();
            }
        }

Ich weiß nicht, ob ich ein Problem habe, weil ich zwei Updatepanels habe, die denselben Trigger haben (Obwohl ich versucht habe, ihn von UpdatePanelAlertOrderNotification zu entfernen und ihn immer zu setzen.)

Änderungen: Also habe ich versucht, einen neuen Button hinzuzufügen und das Updatepanel zu aktualisieren. Das funktioniert. Wenn ich die Trigger zurück zur Reihenfolgelisten wechsle, funktioniert es nicht. Also meine Frage ist, kann ich 2 verschiedene UpdatePanels mit demselben Trigger haben? Wenn ich das nicht kann, sollte ich in der Lage sein, das fehlerhafte Panel zu aktualisieren, indem ich UpdatePanelAlertOrderNotification.Update() aufrufe?? Ideen?

Jede Hilfe wäre fantastisch. Danke Brad

0voto

Mitchel Sellers Punkte 60318

Ich vermute, dass Sie Probleme mit den Update-Panels haben, die nicht ordnungsgemäß beachtet werden. Ich würde das umschließende Panel mit einem bedingten Trigger einrichten und dann die Update-Methode für beide anderen aufrufen.

Eine Sache, auf die Sie achten sollten, ist, dass Ihr Code, der tatsächlich die Anzeige dieser Elemente aktualisiert, ebenfalls ausgeführt wird.

0voto

Fadrian Sudaman Punkte 6353

Das Problem, das Sie haben, ist, dass die Steuerung rlAlerts im Inhaltsvorlage des ersten Updatepanels liegt und wenn Sie den asynchronen Trigger im zweiten Updatepanel definieren, kennt er rlAlerts nicht, da er mit dem Naming-Container des ersten Updatepanels versehen wurde.

Versuchen Sie eine dieser Ansätze:

  • Nehmen Sie rlAlerts aus dem Updatepanel heraus, wenn das möglich ist
  • Im Code-Behind für den ItemReorder Event-Handler, um explizit UpdatePanelAlertOrderNotification.Update() aufzurufen. Es hört sich so an, als ob Sie es bereits versucht haben und es nicht funktioniert, was seltsam ist
  • Registrieren Sie den Trigger explizit im Code-Behind für das zweite Updatepanel im prerender:

    UpdatePanelAlertOrderNotification.Triggers.Add(new AsyncPostBackTrigger() {ControlID = rlAlerts .UniqueID, EventName = "ItemReorder"});

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