Проблема с UpdatePanel и UpdatePanelAnimationExtender

Я хочу отображать анимацию прогресса во время работы панели обновления, но без повторного рендеринга содержимого панели обновления.

Если я установлю ChildrenAsTriggers = "false", обновленный скрипт UpdatePanelAnimationExtender не сработает (функция onUpdated ()).
Если я установлю ChildrenAsTriggers = "true" и нажму кнопку Показать div, после завершения обновления содержимое панели обновления будет повторно отображено (и div снова скрыт).

Мой код:

<head id="Head1" runat="server">
    <title>Untitled Page</title>
    <script language="javascript" type="text/javascript">
        function ShowHide(){
            var div = document.getElementById('div2');
            if (div.style.display=="none")
                div.style.display="";
            else
                div.style.display="none";


        }

            function onUpdating(){
               // get the update progress div
                var pnlPopup = document.getElementById("div2");                           

            }

            function onUpdated() {
                // get the update progress div
                var pnlPopup = $get("div2"); 
                // make it invisible

            }    

    </script>
</head>
<body>
 <form id="form11" runat="server">
   <asp:ScriptManager ID="ScriptManager1" runat="server">
   </asp:ScriptManager>
   <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"> 
      <ContentTemplate>
        <input id="Button1" onclick="ShowHide();" type="button" value="Show Div (click first)" />
        <asp:Button ID="Button2" runat="server" Text="Button" OnClick="Click"  />
&nbsp;<div id="div1" style="background-color:Red;width:700px;height:200px;"> </div>          
        <div id="div2" style="background-color:Blue;width:700px;height:500px;display:none;"></div>
      </ContentTemplate>
   </asp:UpdatePanel>       
   <cc1:UpdatePanelAnimationExtender ID="UpdatePanelAnimationExtender1" TargetControlID="UpdatePanel1"  runat="server">
       <Animations>
           <OnUpdating>
               <Parallel duration="0" >        
                   <ScriptAction Script="onUpdating();" />  
               </Parallel>
           </OnUpdating>
             <OnUpdated>
              <Parallel duration="0">             
                 <ScriptAction  Script="onUpdated();"  /> 
              </Parallel> 
           </OnUpdated>
      </Animations>
   </cc1:UpdatePanelAnimationExtender>

 </form>
</body>

protected void Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
    }
13.10.2009 08:41:11
2 ОТВЕТА

Используйте элемент управления updateProgress вместо расширения updatePanel с помощью UpdatePanelAnimationExtender.

<form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>

    </div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
                <br />
                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="click" />
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>
        <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
            <ProgressTemplate>
                &nbsp;<img src="loading.jpg" />
            </ProgressTemplate>
        </asp:UpdateProgress>
    </form>


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(5000);
    }
}
0
13.10.2009 08:52:09
Мне нужно активировать скрипт обновления. в нем есть некоторые расчеты и позиционирование.
dani 13.10.2009 09:24:14
Даже если вы можете установить тег Div или изображение под элементом управления UpdateProgress с помощью CSS, что за вычисления вы делаете для этой части?
solairaja 13.10.2009 12:11:05
@Solairaja, я могу управлять позиционированием, но это все равно не работает, панель перерисовывается.
dani 13.10.2009 12:37:01
попробуйте пример, который я
solairaja 13.10.2009 13:08:29
и если вы все еще получаете панель рендеринга ... проверьте ваш web.config на наличие отсутствующих тегов.
solairaja 13.10.2009 13:09:00
РЕШЕНИЕ

Я достиг желаемого результата, используя PageRequestManage, без UpdatePanelAnimationExtender или UpdateProgress.

 with (Sys.WebForms.PageRequestManager.getInstance()) {
         add_beginRequest(onUpdating);
         add_endRequest(onUpdated);
     }
0
16.10.2009 15:11:44