2012-08-06 2 views
3

인터넷 검색을 통해 과거의 질문을 검색하고 검색하는 데 시간을 낭비했지만 그 답변을 어디서나 얻을 수는 없었습니다. 마스터 페이지가 없어서 나에게 적합하지 않습니다.)페이지로드 중 페이지를로드하는 중 마스터 페이지를 사용하여 메시지로드 asp.net

내 질문에 많은 데이터가 Page_Load 메서드의 데이터베이스에서 요청되므로로드하는 데 시간이 걸릴 수있는 asp.net 페이지가 두 개 있습니다. 사용자가 페이지가 손상되었다고 생각하지 않게하고 페이지를 새로 고치거나 다른 작업을 수행하려면로드하는 동안 페이지에서 (메뉴를 제외하고) 다른 모든 것을 숨기는로드 메시지를 넣고 싶습니다.

마스터 페이지와 함께 C#으로 ASP.Net 4.0을 사용하고 있습니다.

내가 가장 성공한 곳은 컨텐츠 마스터가 contentplaceholder를 다루는 마스터 페이지에서 UpdatePanel을 사용하는 것입니다. 그러나 이것이 가장 좋은 방법은 아닙니다. 어쨌든 한 번만 나타납니다. 즉 사용자가 로그인하면로드 메시지가 나타나고 모든 데이터가 홈 페이지 (dashboard.aspx)에로드되면로드 메시지가 사라집니다. 이는 내가 원하는 것입니다. 그러나 사용자가 해당 페이지에서 벗어난 다음 집에서 클릭하면 다시로드 메시지가 나타나지 않고로드하는 데 시간이 걸립니다. 또한 눈에 띄는 시간이 걸리는 다른 페이지에는 표시되지 않습니다. 다음은

은 dashboard.aspx의 페이지 (긴 로딩 시간이있는 페이지)

<asp:Panel ID="PanelWelcome" runat="server"> 
    <h1> 
     Welcome 
     <asp:Label ID="LabelUserName" runat="server" Text="[User Name]" />&nbsp;to your 
     personal Dashboard.</h1> 
    <table width="100%" cellpadding="5px"> 
     <tr> 
      <td style="width: 70%" valign="top"> 
       <asp:Panel ID="Panel2" runat="server"> 
        <p> 
         &nbsp;</p> 
        <h4> 
         Up and Coming </h4> 
        <br /> 
        <asp:GridView ID="GridViewItin" runat="server" Width="100%" HorizontalAlign="Left" 
         OnRowDataBound="GridViewItin_RowDataBound"> 
        </asp:GridView> 
       </asp:Panel> 
      </td> 
      <td style="width: 30%"> 
       <asp:Panel ID="PanelProfile" runat="server"> 
        <asp:ImageButton ID="ImageButtonProfile" runat="server" ImageUrl="~/Images/BlankProfile.jpg" 
         Width="150px" /><br /> 
        <h4> 
         Name:</h4> 
        <asp:Label ID="LabelPARname" runat="server" Text="[Person Name]"></asp:Label> 
        <h4> 
         Company:</h4> 
        <asp:Label ID="LabelBARname" runat="server" Text="[Company Name]"></asp:Label> 
        <h4> 
         Date of Birth:</h4> 
        <asp:Label ID="LabelPARdob" runat="server" Text="[DOB]"></asp:Label><br /> 
        <asp:LinkButton ID="LinkButtonProfilePage" runat="server" OnClick="LinkButtonProfilePage_Click">More details...</asp:LinkButton> 
       </asp:Panel> 
      </td> 
     </tr> 
    </table> 
</asp:Panel> 
master.aspx 아래

<body> 
<form runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 

<div class="page"> 
    <div class="header"> 
     <div class="title"> 
      <h1> 
       Header 
      </h1> 
     </div> 
     <div class="loginDisplay"> 
      <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false"> 
       <AnonymousTemplate> 
        [ <a href="~/Account/Login.aspx" id="HeadLoginStatus" runat="server">Log In</a> 
        ] 
       </AnonymousTemplate> 
       <LoggedInTemplate> 
        Welcome <span class="bold"> 
         <asp:LoginName ID="HeadLoginName" runat="server" /> 
        </span>! [ 
        <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" 
         LogoutPageUrl="~/Default.aspx" /> 
        ] 
       </LoggedInTemplate> 
      </asp:LoginView> 
     </div> 
     <div class="clear hideSkiplink"> 
      <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" 
       IncludeStyleBlock="false" Orientation="Horizontal" OnMenuItemClick="NavigationMenu_MenuItemClick"> 
       <Items> 
        <asp:MenuItem Text="Home" /> 
        <asp:MenuItem Text="About" /> 
       </Items> 
      </asp:Menu> 
     </div> 
    </div> 
    <div class="main"> 

     <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
      <ContentTemplate> 
       <asp:ContentPlaceHolder ID="MainContent" runat="server" /> 

       <asp:UpdateProgress ID="UpdateProgress1" runat="server"> 
        <ProgressTemplate> 
         <asp:Panel ID="Panel1" runat="server" HorizontalAlign="Center"> 
          <asp:Image ID="Image1" runat="server" ImageUrl="~/Images/loader.gif" /> 
         </asp:Panel> 

        </ProgressTemplate> 
       </asp:UpdateProgress> 
      </ContentTemplate> 
     </asp:UpdatePanel> 


     <asp:UpdatePanelAnimationExtender ID="UpdatePanel1_UpdatePanelAnimationExtender" 
      runat="server" Enabled="True" TargetControlID="UpdatePanel1"> 
     </asp:UpdatePanelAnimationExtender> 


    </div> 
    <div class="clear"> 
    </div> 
</div> 
<div class="footer"> 
</div> 
</form> 

와의 본문입니다

나에게 가장 좋은 방법을 알려주고 내가 잘못 가고있는 곳을 보여 주실 수 있습니까? 또한 UpdateProgress 템플릿이 훌륭하게 표시 될 때 ContentTemplate을 숨길 수있는 방법은 무엇입니까?

감사합니다.

답변

3

은 그래서

이 기본적으로 생각하지 않았다 ... 나는 내가 희망 같은 문제를 끝낼 수 있습니다 다른 사람을 돕기 위해 무엇을했는지 게시 줄 알았는데, 내가 잘못하고 있었는지를 파악 논리적으로.Panel과 관련이 없으므로 업데이트 진행 상황을 결코 발생시키지 않는 NavigationMenu와 같은 업데이트 패널 외부의 컨트롤이 있습니다! 패널 외부에서 일어나는 모든 일을 처리하기 위해 업데이트 패널에 트리거를 추가해야했습니다.

그래서, 내 마스터 페이지에 다음 코드

다른 사람을 도움이 될 것입니다
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
     <ContentTemplate> 
      <asp:ContentPlaceHolder ID="MainContent" runat="server" /> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="NavigationMenu" /> 
     </Triggers> 
    </asp:UpdatePanel> 

    <asp:UpdateProgress ID="progress" runat="server" DynamicLayout="true" DisplayAfter="0"> 
      <ProgressTemplate> 
       <div id="overlay"> 
        <div id="modalprogress"> 
         <div id="theprogress"> 
          <asp:Image ID="loader" runat="server" ImageAlign="AbsMiddle" ImageUrl="~/images/loader.gif" /> 
          Please wait... 
         </div> 
        </div> 
       </div> 
      </ProgressTemplate> 
     </asp:UpdateProgress> 


    <asp:UpdatePanelAnimationExtender ID="UpdatePanel1_UpdatePanelAnimationExtender" 
     runat="server" Enabled="True" TargetControlID="UpdatePanel1"> 
    </asp:UpdatePanelAnimationExtender> 

희망이 있었다!

1

UpdateProgress 컨트롤을 사용할 수 있습니다. Ajax Extensions 탭의 Toll 상자에서 가져올 수 있습니다. 나는 당신에게 시나리오를 설명하고있다 :
한다고 가정 나는 그 나는이 버튼은 우리가 다른 페이지로 리디렉션해야 이동에 명중 .when 를 GO 말이, UpdatePnl1 한 Upadate 패널 이름 있습니다. 그 전에 당신이 기다려 주시기 바랍니다.

지금 내 코드가

<asp:UpdatePanel ID="UpdatePnl1" runat="server"> 
<ContentTemplate> 
<asp:Button ID="BtnGO" runat="server" Text="GO" onclick="BtnGO_Click"/> 
</ContentTemplate> 
</asp:Updatepanel> 

버튼 클릭과 같은 코드가 될 것이다 : 지금 여기

protected void BtnGO_Click(object sender, EventArgs e) 
    { 
     Response.Redirect("Example.aspx"); 
    } 

당신이

<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePnl1" > 
     <ProgressTemplate> 

     <asp:Label ID="LblWaitMsg" runat="server" Text="Processing Request, Please Wait..."></asp:Label>   

     </ProgressTemplate> 
</asp:UpdateProgress> 

메모를 추가 할 필요가 무엇의 UpdateProgress에 대한 코드는 다음과 같습니다 페이지에 ScriptManager가 있어야합니다. 좋아

+0

빠른 답장을 보내 주셔서 감사합니다. Example.aspx와 같은로드 페이지를 사용하면 사용자가 뒤로 버튼을 클릭 할 때 영향을 미치지 않을 수 있습니까? 내 마스터 페이지에는 UpdateProgress와 스크립트 관리자가 있습니다. –

관련 문제