Frage

Ich bin mit .NET 3.5 und Gebäude Seiten innerhalb der Gemeinschaft Server 2008-Framework.

Auf einen der Seiten, Ich versuche, eine Update Funktion zu erhalten.

ich eine Probe nahm gerade von ASP.NET-Website, eine Zeit in einem Update zu aktueller Zeit aktualisieren, indem Sie auf eine Schaltfläche klickt, aber aus irgendeinem Grunde, wenn ich versuche und die Funktion, die ganze Seite aktualisiert ausführen .

Hier ist, was ich habe:

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = "Panel refreshed at " + DateTime.Now.ToString();
    Label2.Text = "Panel refreshed at " + DateTime.Now.ToString();
}
<asp:ScriptManager ID="ScriptManager1" runat="server"/>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <fieldset>
            <legend>UpdatePanel</legend>
            <asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label><br />
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
        </fieldset>
    </ContentTemplate>
</asp:UpdatePanel>

Jedes Mal, wenn ich auf die Schaltfläche klicken, sicher, dass die Panel-Updates - aber die ganze Seite Beiträge zurück! Ich kann die ganze Seite blinken sehen. Was zum Teufel mache ich falsch?

Ich bin innerhalb einer verschachtelten MasterpaDE, aber ich bin nicht sicher, ob dies ein Problem ist. Könnte es etwas in dieser Community Server Framework, die ich verwende, dass alle Ereignisse verursacht Postback?

War es hilfreich?

Lösung

Haben Sie Button1 als AsyncPostBackTrigger im Trigger Abschnitt versuchen Einstellung? Stellen Sie die ChildrenAsTriggers Eigenschaft auf true und die UpdateMode Eigenschaft Conditional.

protected void Button1_Click(object sender, EventArgs e)
{    
    Label1.Text = "Panel refreshed at " + DateTime.Now.ToString();    
    UpdatePanel1.Update();
}    
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
    <Triggers>        
        <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />    
    </Triggers>    
    <ContentTemplate>        
        <fieldset>            
            <legend>UpdatePanel</legend>            
            <asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label><br />            
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />        
        </fieldset>    
    </ContentTemplate>
</asp:UpdatePanel>

Andere Tipps

Ich sehe Label2 in Ihrem Codebeispiel oben. Wenn Label2 außerhalb des Update befindet, eine vollständige Aktualisierung der Seite wird auftreten, weil das ist, was für die Seite erforderlich ist, um richtig Label2 zu aktualisieren.

In der Standardeinstellung Update wird nur dynamisch aktualisieren Sie den Inhalt in ihnen, wenn sie durch Kontrollen in ihnen ausgelöst. Wenn Sie einige ausgefallenere Updates tun müssen, etwa eine Taste außerhalb der Platte der Refresh oder ein Etikett in einer anderen Platte verursacht aktualisiert wird, dann müssen Sie das Conditional-Attribut auf dem Update setzen (n) und einige manuellen Update-Anrufe in Ihrem Code.

Ein weiterer möglicher Grund ist, dass, wenn die Seite ClientIDMode="static" hat, steuert dann, dass Sie nur die Update aufzufrischen erwarten, die ganze Seite neu geladen.

Um das Problem zu beheben, müssen Sie nur ClientIDMode="AutoID" an der Steuerung eingestellt (s), die die Update Post zurück auslösen soll.

Set ChildrenAsTriggers="true" auf Ihrer Update Kontrolle.

„Standardmäßig wird Update nur dynamisch aktualisieren Sie den Inhalt in ihnen, wenn sie durch Kontrollen in ihnen ausgelöst hat.“

Ansonsten ist die ganze Seite wird aktualisiert! Das ist der Punkt!

Wenn Sie ein altes Projekt, das von .NET Framework v1.1 aktualisiert wurde, dann entfernen Sie diese Zeile aus Ihrem Web-Config, damit es funktioniert:

<xhtmlConformance mode="Legacy"/>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top