2009-10-06 15 views
6

Ich habe scheinbar kein Ende der Probleme mit ihnen.Wie verwenden Sie ein UpdatePanel richtig? (asp.net)

Ich habe ein Update-Panel mit einigen Kontrollkästchen. Ich überprüfe sie und drücke meine Save-Taste, aber es bewirkt, dass das Update-Panel postback (aktualisieren) und setzt sie alle auf leer. Die Methode zum erneuten Zeichnen wird vor dem Schaltflächencode ausgeführt.

Was ist der richtige Weg, um ein Updatepanel mit Checkboxen zu haben, in denen Sie manipulieren können?

Edit: Ich denke, das Problem könnte ein grundlegendes Design sein. Ich brauche wirklich ein komplettes Tutorial, wie man updatepanels richtig benutzt.

+0

Ich denke, Update-Panel wird verwendet, um den Inhalt unter diesem Panel zu aktualisieren, anstatt die gesamte Seite neu zu laden e ... –

Antwort

10

Beispiel Code:

<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> 

Stellen Sie sicher, dass:

  1. Update von Update Conditional ist
  2. Savebutton enthalten in Trigger-Abschnitt als ControlID von AsyncPostBackTrigger
+0

Ich denke, die bedingte Sache kann es verursachen. Ich denke, ich kann es jetzt lösen, danke. – NibblyPig

+0

Microsoft JScript-Laufzeitfehler: Sys.WebForms.PageRequestManagerServerErrorException: Ungültiges Postback- oder Rückrufargument. Die Ereignisvalidierung wird mit in der Konfiguration oder <% @ Page EnableEventValidation = "true"%> auf einer Seite aktiviert.Aus Sicherheitsgründen überprüft diese Funktion, dass Argumente für Postback- oder Callback-Ereignisse von dem Serversteuerelement stammen, das sie ursprünglich gerendert hat. Wenn die Daten gültig und erwartet sind, verwenden Sie die ClientScriptManager.RegisterForEventValidation-Methode, um die Postback- oder Callback-Daten für die Validierung zu registrieren. – NibblyPig

+0

Hmm ... Das ist sehr seltsam. Kannst du eine Beschreibung deines ScriptManagers schreiben? – AndreyAkinshin

2

Stellen Sie sicher, dass sich die Schaltfläche "Speichern" im Aktualisierungsfenster befindet und wenn nicht, wird dies als Auslöser für das Aktualisierungsfenster im Abschnitt <Triggers> des Aktualisierungsfensters festgelegt.

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

Können Sie Code für Ihr UpdatePanel anzeigen?

3

Ihr Code sollte wie

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

Wie sehen werden, wenn Sie auf Speichern, um Ihre Nachziehen() -Methode aufgerufen Hit und wieder Ihre Kontrollkästchen aktualisieren. Asynchrone Postbacks verhalten und drücken Sie auf Seite Methode gleiche wie vollständige Postbacks aber erfrischt Wert in Update

Auch diese URL überprüfen http://ajax.net-tutorials.com/controls/updatepanel-control/

+0

Das macht Sinn, aber es scheint das Panel automatisch zu löschen. Wenn ich "wenn (Bedingung) zurückgeben" Als erste Zeile meiner update panels onload-Methode, es endet damit, es zu löschen. – NibblyPig

+0

show ur code ..... –

0

Wenn Sie Server verwenden steuert Kontrollkästchen machen Sie EnableViewState="true" Attribut für diese Kontrollen und Update-Panel hinzufügen sollten .

Wenn Sie Kontrollkästchen haben, die keine Serversteuerelemente sind, entfernen Sie sie aus dem Aktualisierungsfenster und fügen Sie nur die Serversteuerelemente hinzu. Dies führt dazu, dass mehrere Aktualisierungen auf einer Seite angezeigt werden, die normalerweise kein großes Problem darstellt.

0

Fügen Sie Ihrer Seite ein ScriptManager-Objekt hinzu, wenn Sie kein ScriptManager-Objekt haben. Stellen Sie EnablePartialRendering = "true" ein. Platzieren Sie Ihr UpdatePanel irgendwo anders auf der Seite und platzieren Sie den Inhalt, den Sie anheben möchten, in ein Tag innerhalb Ihres UpdatePanels.

Verwandte Themen