Domanda

Sto usando .NET 3.5 e Creazione di pagine all'interno del Server Comunitaria 2008 quadro.

In una delle pagine, io sto cercando di ottenere un lavoro UpdatePanel.

Ho preso un campione direttamente dal sito ASP.NET, aggiornare un tempo in un UpdatePanel l'ora corrente facendo clic su un pulsante, , ma per qualche ragione quando provo ed eseguire la funzione tutta pagina viene aggiornata .

Ecco quello che ho:

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>

Ogni volta che si fa clic sul pulsante, sicuro gli aggiornamenti del pannello - ma l'intero messaggi di pagina indietro! Posso vedere l'intera pagina lampeggiante. Che diamine sto sbagliando?

Sono all'interno di una Masterpage nidificato, ma non sono sicuro se questo è un problema. Ci potrebbe essere qualcosa in questo quadro comunitario Server che sto usando che causa tutti gli eventi di postback?

È stato utile?

Soluzione

Hai provato impostando Button1 come AsyncPostBackTrigger nella sezione Trigger? Impostare la proprietà ChildrenAsTriggers al true e la proprietà UpdateMode a 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>

Altri suggerimenti

Non riesco a vedere Label2 nel campione codice di cui sopra. Se Label2 si trova al di fuori del UpdatePanel, un aggiornamento completo pagina si verificherà, perché questo è ciò che è richiesto per la pagina per aggiornare correttamente Label2.

Per impostazione predefinita, UpdatePanels si aggiorna solo dinamicamente il contenuto al loro interno, una volta innescato da controlli al loro interno. Se avete bisogno di fare alcuni aggiornamenti più elaborate, per esempio un pulsante esterno del pannello che causa l'aggiornamento o un'etichetta in un pannello diverso da aggiornare, quindi è necessario impostare l'attributo Conditional sul UpdatePanel (s) e fare alcune chiamate aggiornamento manuale nel codice.

Un'altra possibile ragione è che se la pagina ha ClientIDMode="static", controlla quindi che si prevede di aggiornare solo l'UpdatePanel si aggiorna l'intera pagina.

Per risolvere il problema, è sufficiente impostare ClientIDMode="AutoID" sul comando (s), che dovrebbe far scattare il palo UpdatePanel indietro.

Set ChildrenAsTriggers="true" sul controllo UpdatePanel.

"Per impostazione predefinita, UpdatePanels si aggiorna solo dinamicamente il contenuto al loro interno, una volta innescato da controlli al loro interno".

In caso contrario, l'intera pagina verrà aggiornata! Quello è il punto!

Se si dispone di un vecchio progetto che è stato aggiornato da v1.1 NET Framework, quindi rimuovere questa riga dal vostro web di configurazione per farlo funzionare:

<xhtmlConformance mode="Legacy"/>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top