2009-02-06 8 views
7

Próbuję wyświetlić aktualizację postępu ładowania obrazu za każdym razem, gdy mój panel aktualizacji robi to rzecz Ajax. Rozglądałem się po tutorialach i wydaje mi się to bardzo proste, ale nie mam szczęścia. Tutaj jest dość dużo, co mam ...Nie można pobrać programu ASP.Net UpdateProgress w celu wyświetlenia

<div id="panelWrapper"> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:UpdateProgress ID="TaskUpdateProgress" runat="server" DynamicLayout="False" AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="0"> 
      <ProgressTemplate> 
       <asp:Image ImageUrl="~/Images/ajax-loader.gif" Width="16px" Height="16px" runat="server" ID="TaskLoadingImage"/> 
      </ProgressTemplate> 
     </asp:UpdateProgress> 

     <div id="UrlDiv" class="URLNotification"> 
      <asp:Label ID="UrlLabel" runat="server" Text="URL:" AssociatedControlID="Url" /> 
      <asp:HyperLink ID="Url" runat="server" Text="Click &quotGenerate" to create the URL." /> 
     </div> 

     <br /> 

     <asp:CheckBoxList runat="server" ID="IncludeItems" TextAlign="Right"> 
      <asp:ListItem Selected="True">Include 1</asp:ListItem> 
      <asp:ListItem Selected="True">Include 2</asp:ListItem> 
     </asp:CheckBoxList> 

     <br /> 

     <div id="buttons" style="display:inline;"> 
      <asp:Button ID="Generate" runat="server" OnClicked="Generate_Clicked" Text="Generate" /> 
      <asp:Button ID="Add" runat="server" OnClientClick="add();" Text="Add"/> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

Mam też pewne pozycjonowanie bezwzględne stylizacji w arkuszu stylów. Wypróbowałem kilka wariantów tego, co tu widzisz, i nie znalazłem wiele dobrych informacji na temat tego, co może być problemem. Jakieś pomysły? Jeśli potrzebujesz czegoś jeszcze, daj mi znać.

EDIT: Jedyna nowa informacja znalazłem jest to, że ...

„W kolejnych scenariuszy, sterowanie UpdateProgress nie wyświetli się automatycznie:

Kontrola UpdateProgress jest powiązana z konkretnym aktualizacji, ale asynchroniczne odświeżenie jest wynikiem kontroli, która nie znajduje się w panelu aktualizacji. i nie jest cyngiel. Na przykład aktualizacja jest wykonywana w kodzie. "

Jestem przekonany, że żaden z nich nie pasuje do mojej sprawy.To dzieje się tylko przycisk (który znajduje się w panelu aktualizacji) jest kliknięty wywołując jakiś kod za którym zestaw jest tekst URL być przeładowane na panelu aktualizacji.

+1

Należy zauważyć, że formant UpdateProgress ma parametr DisplayAfter, który określa czas w milisekundach, który musi upłynąć, zanim zostanie wyświetlona jego treść. Domyślnie jest to 500 milisekund, więc jeśli twoja operacja Ajax jest szybsza (i wiele z nich), to nie zobaczysz wskaźnika postępu. Aby to przetestować, możesz wprowadzić opóźnienie w przetwarzaniu po stronie serwera za pomocą Threading.Thread.Sleep (1000), które opóźni się o 1 sekundę. Następnie powinieneś zobaczyć zawartość postępu aktualizacji. Zobacz https://blogs.msdn.microsoft.com/kashif/2006/11/08/updateprogress-control-in-asp-net-ajax/ –

Odpowiedz

2

Chyba zorientowali się, co się dzieje. problem nie był niczym Robiłem źle z UpdateProgress lub Panel. To było, że miałem inne rzeczy ładujące w tle, które najwyraźniej zatrzymywały Ajaxyness UpdatePanel.

Zasadniczo stało się tak, że ikona ładowania nie pojawiła się na początkowym załadowaniu strony. Zdałem sobie z tego sprawę, ponieważ czekałem, aż wszystko na stronie zostanie całkowicie załadowane, by wystrzelić z przycisku. Rzeczywiście pojawił się ładowacz.

Założono, że odświeżenie panelu aktualizacji będzie wymagane przynajmniej w momencie usłyszenia zdarzenia kliknięcia, aby ikona modułu ładującego pojawiła się natychmiast w czasie ładowania innych materiałów. Nie wydaje się, aby tak było, ale ...

4

nie kładź kontrolę postępu aktualizacji wewnątrz panelu kontrolnym aktualizacja

+1

Dziękuję za szybką odpowiedź, ale już byłem na tej ścieżce i Po prostu spróbowałem jeszcze raz sprawdzić. Wciąż nie było szczęścia. Również strona przykładów asp.net dla UpdateProgress mówi, że "Możesz umieścić kontrolki UpdateProgress wewnątrz lub na zewnątrz kontroli UpdatePanel." – Carter

+0

hmm, czy próbowałeś wyjąć kontrolę obrazu i po prostu wstawić jakiś statyczny tekst, aby upewnić się, że ścieżka obrazu jest prawidłowa? – Element

4

Mam ten sam problem z UpdateProgressPanel. Dowiedziałem się, że po umieszczeniu UpdateProgressPanel i powiązaniu go z UpdatePanel, wszelkie odświeżenie z tego UpdatePanel spowoduje wyświetlenie UpdateProgressPanel.

Kolejną rzeczą do zrobienia jest usunięcie parametru AssociatedUpdatePanel, jeśli masz pojedynczy UpdatePanel na stronie, spowoduje to, że UpdateProgressPanel będzie pokazywał każdy Async PostBack, który się dzieje.

UpdateProgressPanel można umieścić w dowolnym miejscu kodu, z wyjątkiem obszarów z wstępnie zdefiniowanymi znacznikami. Może być umieszczony wewnątrz lub na zewnątrz UpdatePanel i pokaże czy poprawnie umieścił swój CSS, skojarzył go z UpdatePanelem lub po prostu umieścił tam i wyświetli się, jeśli pojawi się wynik odsyłający asynchroniczny.

2

Po konwersji mojego projektu z VS2008 na VS2010 bardzo ciężko mi było.UpdateProgress przestał działać nagle, co było w porządku w VS2008. Spędziłem całe popołudnie, szukając odpowiedzi i eksperymentując to i tamto, wreszcie znalazłem, co poszło nie tak od Scott Gu's posting.

Był to automatycznie wygenerowany wpis web.config 'xhtmlformularz konfiguracji = "starszy"'.

Po wyłączeniu tego zaczęło działać ponownie. Być może nie dla ciebie, ale dla facetów borykających się z tym samym problemem.

Szczęśliwy kodowania

4

Upewnić się, że UpdateProgress 'DisplayAfter' jest ustawiona na 1000 (1 sek)

+0

DisplayAfter był tym, czego brakowało w moim przypadku. Mam panel postępu aktualizacji w panelu aktualizacji i działa dobrze. Dzięki za podpowiedź –

+1

masz na myśli 1000 przez 1 sek. –

-1
Create a new ASP.NET Ajax-Enabled Web Site and then paste these code in ascs and aspx file. Run it and you can see the update progress. You can use animated gif files too to show the progress... 

ascx Page 
====================================================== 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title>UpdateProgress control</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
     <asp:UpdateProgress runat="server" id="PageUpdateProgress" AssociatedUpdatePanelID="Panel"> 
      <ProgressTemplate> 
       Loading... 
      </ProgressTemplate> 
     </asp:UpdateProgress> 
     <asp:UpdatePanel runat="server" id="Panel"> 
      <ContentTemplate> 
       <asp:Button runat="server" ID="UpdateButton" OnClick="UpdateButton_Click" Text="Update" /> 
      </ContentTemplate> 
       <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="UpdateButton" EventName="Click" /> 
       </Triggers>    
     </asp:UpdatePanel> 
    </form> 
</body> 
</html> 

aspx Page 
====================================================== 
protected void UpdateButton_Click(object sender, EventArgs e) 
{ 
    System.Threading.Thread.Sleep(5000); 
} 
+0

Ta odpowiedź nie pomoże rozwiązać problemu –

1

Miałem też problem z UpdateProgress nie pokazuje. Okazało się, że oddzwonienie do serwera było tak szybkie, że nigdy nie było czasu na pokazanie. Dodanie Thread.Sleep (10000) pomogło pokazać problem.

Powiązane problemy