2012-04-15 7 views
1

트리거와 함께 UpdateProgress를 사용하려고하지만 (코드보기 참조), asyncPostBackTrigger로 지정된 버튼을 클릭하면 UpdateProgress가 작동하지 않습니다. AssociatedUpdatePanelID 속성을 제거하면 UpdateProgress 컨트롤이 작동합니다. 하지만 독립적 인 UpdateProgress를 구성하려면 UpdateProgress 컨트롤의 AssociatedUpdatePanelID 속성을 지정해야합니다.트리거가 작동하지 않는 UpdateProgress

정상적인 동작입니까?

참고 : 내가 Sys.WebForms.PageRequestManager 인스턴스를 차단하고 수동으로 를 표시하고의 UpdateProgress 요소를 숨길 수있는 asyncronous 요청을 조작하고 싶지 않아요. 그렇게 할 수있는 방법이 있습니까?

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" Inherits="AjaxExtensionsTest._Default" %> 
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server"> 
    </asp:ScriptManager> 
    <h2> 
     Ajax Extensions Test 
    </h2> 
     <asp:UpdatePanel ID="up1" UpdateMode="Conditional" runat="server"> 
      <ContentTemplate> 
       <div id="content"> 
        <asp:TextBox ID="txtDataHora" runat="server"></asp:TextBox> 
        <asp:UpdateProgress ID="progress1" AssociatedUpdatePanelID="up1" DynamicLayout="true" DisplayAfter="0" runat="server"> 
         <ProgressTemplate> 
          <div> 
           <img alt="progress" src="loading.gif" /> 
          </div> 
         </ProgressTemplate> 
        </asp:UpdateProgress> 
       </div> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" /> 
      </Triggers> 
     </asp:UpdatePanel> 
    <asp:Button ID="btnSubmit" Text="Get Current Date/Time" runat="server" onclick="btnSubmit_Click" /> 
    <p> 
    </p> 
</asp:Content> 
<script runat="server" language="csharp"> 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     ScriptManager1.RegisterAsyncPostBackControl(btnSubmit); 
    } 

    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     txtDataHora.Text = DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss"); 
     System.Threading.Thread.Sleep(2000); 
    } 
</script> 

답변

0

당신은 AsyncPostBackTrigger 및 AssociatedUpdatePanelID 후 유일한 옵션은 Sys.WebForms.PageRequestManager 인스턴스에서 이벤트를 처리하고 수동으로 표시하고의 UpdateProgress 요소를 숨기는 것입니다 사용해야하는 경우. 거기에 코드가 서버에서 실행하고 아주 정돈하게하기 위해 컨트롤에 캡슐 수있는 필요한 자바 스크립트를 주입합니다.

관련 문제