none
ajax控件UpdatePanelAnimationExtender的问题 RRS feed

  • 问题

  • UpdatePanelAnimationExtender 这个控件貌似只能在有一个updatepanel存在的情况下管用,如果有多个,则就失控了,不管那个updatepanel更新,它都响应,不知道有没有办法解决一下啊!
    2009年10月21日 1:42

答案

  • 不会啊,关键要把每个UpdatePanel的属性这样设置:

    ChildrenAsTriggers="false" UpdateMode="Conditional"
    下面是我的参考代码:


    <form id="form1" runat="server">
        <asp:ScriptManager ID="asm" runat="server" />
        <div>
            <asp:UpdatePanel ID="upOne" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:Panel ID="Panel1" CssClass="panelClass" runat="server">
                        <br />
                        更新面板1中服务器时间:<asp:Label ID="lblShowOne" runat="server" Text=""></asp:Label>
                        <asp:Button ID="btnSubmit" runat="server" Text="提交" OnClick="btnSubmit_Click" />
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>
            <br />
            <br />
            <br />
            <asp:UpdatePanel ID="upTwo" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:Panel ID="Panel2" CssClass="panelClass" runat="server">
                        <br />
                        更新面板2中服务器时间:<asp:Label ID="lblShowTow" runat="server" Text=""></asp:Label>
                        <asp:Button ID="btnOk" runat="server" Text="确定" OnClick="btnOk_Click" />
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>
            <cc1:UpdatePanelAnimationExtender ID="upae" runat="server" TargetControlID="upOne">
                <Animations>
              <OnUpdated>
                <FadeIn Duration="1.0" Fps="24" />
              </OnUpdated>
                </Animations>
            </cc1:UpdatePanelAnimationExtender>
        </div>
        </form>
    protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                this.lblShowOne.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                this.lblShowTow.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            }
        }
    
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            this.upOne.Update();
            this.lblShowOne.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }
    
        protected void btnOk_Click(object sender, EventArgs e)
        {
            this.upTwo.Update();
            this.lblShowTow.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }

    努力!奋斗
    • 已标记为答案 刘赛 2009年10月21日 2:40
    2009年10月21日 2:14

全部回复

  • 不会啊,关键要把每个UpdatePanel的属性这样设置:

    ChildrenAsTriggers="false" UpdateMode="Conditional"
    下面是我的参考代码:


    <form id="form1" runat="server">
        <asp:ScriptManager ID="asm" runat="server" />
        <div>
            <asp:UpdatePanel ID="upOne" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:Panel ID="Panel1" CssClass="panelClass" runat="server">
                        <br />
                        更新面板1中服务器时间:<asp:Label ID="lblShowOne" runat="server" Text=""></asp:Label>
                        <asp:Button ID="btnSubmit" runat="server" Text="提交" OnClick="btnSubmit_Click" />
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>
            <br />
            <br />
            <br />
            <asp:UpdatePanel ID="upTwo" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:Panel ID="Panel2" CssClass="panelClass" runat="server">
                        <br />
                        更新面板2中服务器时间:<asp:Label ID="lblShowTow" runat="server" Text=""></asp:Label>
                        <asp:Button ID="btnOk" runat="server" Text="确定" OnClick="btnOk_Click" />
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>
            <cc1:UpdatePanelAnimationExtender ID="upae" runat="server" TargetControlID="upOne">
                <Animations>
              <OnUpdated>
                <FadeIn Duration="1.0" Fps="24" />
              </OnUpdated>
                </Animations>
            </cc1:UpdatePanelAnimationExtender>
        </div>
        </form>
    protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                this.lblShowOne.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                this.lblShowTow.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            }
        }
    
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            this.upOne.Update();
            this.lblShowOne.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }
    
        protected void btnOk_Click(object sender, EventArgs e)
        {
            this.upTwo.Update();
            this.lblShowTow.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }

    努力!奋斗
    • 已标记为答案 刘赛 2009年10月21日 2:40
    2009年10月21日 2:14
  • 我的两个updatepanel  都设置了UpdateMode="Conditional"  但是就是不行,如果都加上ChildrenAsTriggers="false"这个当然是可以的,因为没有POSTBACK了。我的不能加ChildrenAsTriggers="false"这个条件,因为我需要它更新。
    2009年10月21日 2:20
  • 当你需要更新一个UpdatePanel时,使用this.upOne.Update();不能解决你的问题吗?
    努力!奋斗
    2009年10月21日 2:26
  • 哈哈,解决该问题有两种办法:
    1.正如楼上所说,每个updatapanel的属性都设置为ChildrenAsTriggers="false" UpdateMode="Conditional",在需要更新时候,在后台调用this.upOne.Update();
    2.UpdatePanelAnimationExtender  控件里执行的动画是可以添加条件的,例如:

    <OnUpdating>
                            <Parallel duration="0">
                                <Condition ConditionScript="$get('HiddenField2').value=='1'">
                                <ScriptAction Script="onUpdating();" /> 
                                </Condition>
                             </Parallel>
                        </OnUpdating>
                        <OnUpdated>
                            <Parallel duration="0">
                            <Condition ConditionScript="$get('HiddenField2').value=='2'">
                                <ScriptAction Script="onUpdated();" />
                                </Condition>
                            </Parallel>
                        </OnUpdated>

    大家可以任意发挥,当满足指定条件时候才执行动画,也能解决此问题。
    2009年10月21日 2:38