2014-01-15 5 views
1

데이터를 가져 와서로드하는 데 시간이 많이 걸리는 정말 큰 페이지가 있습니다. 처음 .aspx 페이지를 탐색 할 때 멋진 로딩 .png 이미지를 표시하여 사람들이 표시하기 전에 창을 닫지 않도록하고 싶습니다. 나는 ASP를 퍼팅 시도했다 : UpdateProgress하지만 이것은 페이지가로드 될 때까지 나타나지 않고 페이지에서 뭔가를한다. 나머지 페이지가로드되기 전에 먼저 로딩 화면을 어떻게 가져 옵니까? 아래는 내가 시도한 것입니다.페이지로드 페이지로드 asp : UpdateProgress

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="10"> 
     <ProgressTemplate> 
      <div id="updatestatus" class="shadow"> 
      <asp:Label ID="Label12" runat="server" Text="Loading..."> 
      </asp:Label> 
      <asp:Image ID="Image1" 
      runat="server" ImageUrl="~/images/1status.png" /> 
      </div> 
     </ProgressTemplate> 
</asp:UpdateProgress> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
     <ContentTemplate> 
     <%-- My page loading stuff --> 
     </ContentTemplate> 
</asp:UpdatePanel> 

나는 또한 타이머를 사용해 보았습니다. 여기 흥미 로워집니다. ContentTemplate 내의 레이블은 틱에 잘 표시됩니다. GridView는 내용 템플릿 안에 배치하지 않습니다.

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
    <asp:Image ID="Image1" runat="server" ImageUrl="~/images/1status.png" /> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" Visible="false"> 
     <ContentTemplate> 
      <!-- My page loading stuff --> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    <asp:Timer ID="Timer1" runat="server" Interval="600" OnTick="Timer1_Tick"></asp:Timer> 


protected void Timer1_Tick(object sender, EventArgs e) 
{ 
UpdatePanel1.Visible = true; 
Timer1.Enabled = false; 
Image1.Visible = false; 
} 

나는 updatepanel을 완전히 꺼내 봤지만 타이머의 gridview 표시 상태를 변경해도 여전히 작동하지 않습니다. gridview는 결코 나타나지 않습니다. 흥미로운 무엇

내가 다음을 수행하는 페이지

protected void ButtonHide_Click(object sender, EventArgs e) 
{ 
     if (GridView1.Visible) 
     { 
      GridView1.Visible = false; 
     } 
     else 
     { 
      GridView1.Visible = true; 
     } 

} 

의 버튼을 놓으면 내가 그것을 클릭하고 숨기고 나는 문제없이 원하는대로의 GridView를 여러 번 보여줄 수 있다는 것입니다. 타이머가 다른 이유는 무엇입니까?

답변

0

.aspx 코드에서 타이머를 설정하고 TimerRefresh을 끈 상태로 둡니다. 다음 포스트 백 (처음)이 아닌 경우 페이지가로드되기 시작하면 TimerRefresh을 켭니다. 그것은 즉시 똑딱 거린다. 이로 인해 포스트 백이 될 페이지 새로 고침이 발생합니다. 이로 인해 UpdateProgress1이 표시됩니다. PageLoad()은 PostBack이기 때문에 아무 것도하지 않습니다. TimerRefresh_Tick(object sender, Eventargs e)이 발생했습니다. 타이머 틱에서 트리거 되었기 때문입니다. 이로 인해 타이머가 다시 실행되지 않고 데이터가있는 페이지가로드됩니다. 완료되면 즉시 UpdateProgress1가 사라집니다. TimerRefresh_Tick(object sender, EventArgs e)

TimerRefresh.Enabled = false; 
codeToLoadDate(); 

에서 Page_Load()

if (!IsPostBack) 
{ 
TimerRefresh.Enabled = true; 
} 

에서

.ASPX

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="10"> 
    <ProgressTemplate> 
     <div id="updatestatus" class="shadow"> 
     <asp:Label ID="Label12" runat="server" Text="Loading..."> 
     </asp:Label> 
     <asp:Image ID="Image1" 
     runat="server" ImageUrl="~/images/1status.png" /> 
     </div> 
    </ProgressTemplate> 
</asp:UpdateProgress> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:Timer ID="TimerRefresh" runat="server" Interval="100" 
     ontick="TimerRefresh_Tick" Enabled="False"> 
    <%-- My page loading stuff - controls that would hold data --> 
    </ContentTemplate> 
</asp:UpdatePanel>