2009-10-06 10 views
6

Wydaje mi się, że nie mam z nimi końca problemów.Jak prawidłowo używać UpdatePanel? (asp.net)

Mam panel aktualizacji z niektórymi polami wyboru. Sprawdzam je i wciskam przycisk Zapisz, ale powoduje to, że panel aktualizacji odkłada (odśwież) i ustawia je ponownie jako puste. Metoda ponownego rysowania działa przed kodem przycisku.

Jaki jest poprawny sposób na aktualizację z pola wyboru w którym można manipulować?

Edycja: Myślę, że problem może być fundamentalny. Naprawdę potrzebuję pełnego samouczka, jak poprawnie korzystać z updatepaneli.

+0

myślę panel aktualizacji służy do aktualizowania zawartości pod tym panelem, a nie do ponownego ładowania całej strony e ... –

Odpowiedz

10

Przykład kodu:

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

Upewnij się, że:

  1. UpdateMode z UpdatePanel jest warunkowa
  2. SaveButton zawarte w wyzwalaczy poprzecznym jako sterowania ustawiono z AsyncPostBackTrigger
+0

Myślę, że warunkowa rzecz może być przyczyną tego. Sądzę, że teraz mogę to rozwiązać, dzięki. – NibblyPig

+0

Błąd środowiska wykonawczego Microsoft JScript: Sys.WebForms.PageRequestManagerServerErrorException: Nieprawidłowy argument odświeżenia lub wywołania zwrotnego. Sprawdzanie poprawności zdarzeń jest włączane przy użyciu w konfiguracji lub <% @ Page EnableEventValidation = "true"%> na stronie.Ze względów bezpieczeństwa funkcja ta weryfikuje, czy argumenty dotyczące wywołania zwrotnego lub wywołania zwrotnego pochodzą z kontrolki serwera, która pierwotnie je wyrenderowała. Jeśli dane są poprawne i oczekiwane, użyj metody ClientScriptManager.RegisterForEventValidation, aby zarejestrować dane dotyczące oddzwonienia lub wywołania zwrotnego do sprawdzania poprawności. – NibblyPig

+0

Hmm ... To bardzo dziwne. Czy możesz napisać opis swojego ScriptManager? – AndreyAkinshin

2

Upewnij się, że przycisk Zapisz znajduje się w Panelu aktualizacji na początek, a jeśli nie, to jest określany jako wyzwalacz dla panelu aktualizacji, w sekcji <Triggers> panelu aktualizacji.

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

Czy możesz pokazać kod do swojej UpdatePanel?

3

kod należy wyglądać

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

Jako kiedy trafisz przycisk Zapisz metoda Twój ponowne rysowanie() nazywa i jeszcze raz odświeżyć swoje pola wyboru. Asynchroniczny zachowuje odświeżenie strony i uderzył z metodą strona samo jak pełne odświeżenie ale odświeża wartość UpdatePanels

również sprawdzić ten adres http://ajax.net-tutorials.com/controls/updatepanel-control/

+0

To ma sens, ale wydaje się, że panel jest automatycznie czyszczony. Jeśli wstawię "if (warunek) return;" jako pierwszy wiersz mojej metody aktualizacji na panelach aktualizacji, w końcu ją wyczyści. – NibblyPig

+0

Pokaż kod uroku ..... –

0

Jeśli używasz serwera kontroluje renderowanie wyboru należy dodać atrybut EnableViewState="true" do tych kontroli i panelu aktualizacji .

Jeśli masz pola wyboru, które nie są elementami sterującymi serwera, usuń je z panelu aktualizacji, uwzględnij tylko elementy sterujące serwera. Prowadzi to do utrzymywania panelu aktualizacji na stronie, która zwykle nie jest dużym problemem.

0

Dodaj obiekt ScriptManager do strony, jeśli go nie masz. Ustaw EnablePartialRendering = "true". Umieść swój UpdatePanel gdziekolwiek indziej na stronie i umieść zawartość, która ma być w użyciu, w tagu w twoim UpdatePanelu.

Powiązane problemy