2009-10-06 27 views
6

Mi sembra di non avere problemi con loro.Come si utilizza un UpdatePanel correttamente? (asp.net)

Ho un pannello di aggiornamento con alcune caselle di controllo. Le controllo, e premo il pulsante Salva, ma fa sì che il pannello di aggiornamento si postback (aggiorna) e le imposta tutte in bianco. Il metodo di ridisegno viene eseguito prima del codice del pulsante.

Qual è il modo corretto di avere un pannello di aggiornamento con caselle di controllo in cui è possibile manipolare?

Edit: Penso che il problema potrebbe essere uno di progettazione fondamentale. Ho davvero bisogno di un tutorial completo su come utilizzare correttamente gli updatepanel.

+0

penso il pannello di aggiornamento è usato per aggiornare i contenuti sotto quel pannello piuttosto che ricaricare l'intera pag e ... –

risposta

10

Esempio di codice:

<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="updatePanel1"> 
    <ContentTemplate> 
     <asp:CheckBox runat="server" ID="myCheckBox" Caption="CheckBox"/> 
     <asp:Button runat="server" ID="saveButton" 
        Caption="Save" OnClick="SaveButtonClick"/> 
    </ContentTemplate>  
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="saveButton" EventName="Click" />   
    </Triggers> 
</asp:UpdatePanel> 

Assicurarsi che:

  1. UpdateMode di UpdatePanel è condizionato
  2. SaveButton contenute nel trigger-sezione come ControlID di AsyncPostBackTrigger
+0

Penso che la cosa condizionale potrebbe causarlo. Suppongo di poterlo risolvere ora, grazie. – NibblyPig

+0

Errore di runtime di Microsoft JScript: Sys.WebForms.PageRequestManagerServerErrorException: argomento postback o callback non valido. La convalida degli eventi è abilitata usando nella configurazione o <% @ Page EnableEventValidation = "true"%> in una pagina.Per motivi di sicurezza, questa funzionalità verifica che gli argomenti di postback o eventi di callback abbiano origine dal controllo server che li ha originariamente visualizzati. Se i dati sono validi e previsti, utilizzare il metodo ClientScriptManager.RegisterForEventValidation per registrare i dati di postback o callback per la convalida. – NibblyPig

+0

Hmm ... Questo è molto strano. Puoi scrivere la descrizione del tuo ScriptManager? – AndreyAkinshin

2

Assicurarsi che il pulsante Salva sia all'interno del Pannello di aggiornamento, per un avvio e, in caso contrario, che è designato come Trigger per il Pannello di aggiornamento, nella sezione del Pannello di aggiornamento.

<asp:UpdatePanel ID="MyControlPanel" runat="server" UpdateMode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="SaveButton" /> 
    </Triggers> 
    <ContentTemplate> ... 

Potete mostrare qualche codice per il vostro UpdatePanel?

3

il codice dovrebbe essere l'aspetto di

if(!page.ispostback) 
{ 
    re-drawing(); 
} 

Come quando si preme il pulsante Salva il tuo metodo di ri-disegno() chiamato e di nuovo rinfrescare la caselle di controllo. Asincrono si comportano postback e ha colpito il metodo pagina stessa come piena postback, ma rinfresca valore nel UpdatePanels

controllare anche questo URL http://ajax.net-tutorials.com/controls/updatepanel-control/

+0

Questo ha senso, ma sembra cancellare automaticamente il pannello. Se inserisco "if (condition) return;" come prima linea del metodo onload del mio pannello di aggiornamento, finisce per cancellarlo. – NibblyPig

+0

mostra il tuo codice ..... –

0

Se si utilizza server controlla per rendere caselle di controllo si dovrebbe aggiungere l'attributo EnableViewState="true" a questi controlli e pannello di aggiornamento .

Se si dispone di caselle di controllo che non sono controlli del server, quindi rimuoverle dal pannello di aggiornamento, includere solo i controlli del server all'interno. Questo porta a mantenere diversi pannelli di aggiornamento su una pagina che di solito non è un grosso problema.

0

Aggiungi un oggetto ScriptManager alla pagina se non ne hai uno. Imposta EnablePartialRendering = "true". Metti il ​​tuo UpdatePanel in qualsiasi altro punto della pagina e posiziona il contenuto che desideri etichettato all'interno di un tag all'interno di UpdatePanel.

Problemi correlati