2012-04-15 12 views
1

TriggersでUpdateProgressを使用しようとしていますが(コード参照)、asyncPostBackTriggerとして割り当てられたボタンをクリックすると、UpdateProgressは機能しません。 AssociatedUpdatePanelIDプロパティを削除すると、UpdateProgressコントロールが機能します。しかし、独立したUpdateProgressを設定したいので、UpdateProgressコントロールの AssociatedUpdatePanelIDプロパティを指定する必要があります。Triggerが無効の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要素を表示し、非表示にすることです。サーバー上で実行され、必要なJavaScriptを注入するコードがあります。このJavaScriptは、これをきちんと整理するためにコントロールにカプセル化することができます。