Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动画扩展器问题_C#_Animationextender - Fatal编程技术网

C# 动画扩展器问题

C# 动画扩展器问题,c#,animationextender,C#,Animationextender,我刚刚开始使用animationXtender。我用它来显示一个新的div,当按下一个按钮时,它包含一个从数据库收集的列表。问题是按钮需要回发以获取此列表,因为除非需要,否则我不想调用数据库。但是,回发会停止动画中间流并将其重置。按钮位于更新面板中 理想情况下,我希望在回发完成并收集列表后,动画开始。我研究了使用ScriptManager来检测回发何时完成,并取得了一些进展。我在页面中添加了两个javascript方法 function linkPostback() { var

我刚刚开始使用
animationXtender
。我用它来显示一个新的div,当按下一个按钮时,它包含一个从数据库收集的列表。问题是按钮需要回发以获取此列表,因为除非需要,否则我不想调用数据库。但是,回发会停止动画中间流并将其重置。按钮位于更新面板中

理想情况下,我希望在回发完成并收集列表后,动画开始。我研究了使用
ScriptManager
来检测回发何时完成,并取得了一些进展。我在页面中添加了两个javascript方法

function linkPostback() {

        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_endRequest(playAnimation)
    }

    function playAnimation() {
        var onclkBehavior = $find("ctl00_btnOpenList").get_OnClickBehavior().get_animation();
        onclkBehavior.play();
    }
function linkPostback() {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_endRequest(playOpenAnimation)
}

function playOpenAnimation() {
    var onclkBehavior = ind("ctl00_aniExt").get_OnClickBehavior().get_animation();
    onclkBehavior.play();         

    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.remove_endRequest(playOpenAnimation) 
}
我已经更改了
btnopenst.OnClientClick=“linkPostback();”

这几乎解决了问题。我还是有些动画口吃。动画在回发之前开始播放,然后在回发之后正确播放。使用
onclkBehavior.pause()
无效。我可以通过在按钮回发事件中将
animationXtender.Enabled=false
设置为true来解决这个问题。但是,这只工作一次,因为现在再次启用了AnimationXtender。我还尝试过通过javascript禁用
animationXtender
,但没有效果

有没有办法只通过javascript调用来播放动画?我需要将自动链接与 按钮单击事件,以便我可以控制何时触发动画

希望这是有道理的

谢谢


DG

您看到的流是这样的:

  • 点击按钮
  • AnimationXtender捕获操作并调用clickOn回调
  • linkPostback启动页面的异步请求,然后将流返回给AnimationXtender
  • 动画开始
  • pageRequest返回并调用playAnimation,这将再次启动动画
  • 我认为至少有两种方法可以解决这个问题。似乎您已经拥有了所需的几乎所有javascript,您只需围绕AnimationXtender工作,单击即可启动动画

    选项1:隐藏AnimationXtender按钮并添加一个播放动画的新按钮。这应该很简单,只需将AE按钮的样式设置为“display:none;”,并拥有自己的按钮调用linkPostback()

    选项2:动画完成后,重新禁用动画扩展程序。只要playAnimation调用处于阻塞状态,这应该可以工作,可能是:

    function linkPostback() {
    
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_endRequest(playAnimation)
    }
    
    function playAnimation() {
    
        AnimationExtender.Enabled = true;
        var onclkBehavior = $find("ctl00_btnOpenList").get_OnClickBehavior().get_animation();
        onclkBehavior.play();
        AnimationExtender.Enabled = false;
    }
    

    另一方面,如果在接收pageRequest时出现延迟,您的一般方法可能会遇到问题。单击一个按钮,几秒钟后就会出现动画,这可能有点奇怪。最好是预加载数据,或者用一些“加载…”的东西预填充div,使其大小合适,然后在它到达时填充实际内容。

    您看到的流是这样的:

  • 点击按钮
  • AnimationXtender捕获操作并调用clickOn回调
  • linkPostback启动页面的异步请求,然后将流返回给AnimationXtender
  • 动画开始
  • pageRequest返回并调用playAnimation,这将再次启动动画
  • 我认为至少有两种方法可以解决这个问题。似乎您已经拥有了所需的几乎所有javascript,您只需围绕AnimationXtender工作,单击即可启动动画

    选项1:隐藏AnimationXtender按钮并添加一个播放动画的新按钮。这应该很简单,只需将AE按钮的样式设置为“display:none;”,并拥有自己的按钮调用linkPostback()

    选项2:动画完成后,重新禁用动画扩展程序。只要playAnimation调用处于阻塞状态,这应该可以工作,可能是:

    function linkPostback() {
    
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_endRequest(playAnimation)
    }
    
    function playAnimation() {
    
        AnimationExtender.Enabled = true;
        var onclkBehavior = $find("ctl00_btnOpenList").get_OnClickBehavior().get_animation();
        onclkBehavior.play();
        AnimationExtender.Enabled = false;
    }
    

    另一方面,如果在接收pageRequest时出现延迟,您的一般方法可能会遇到问题。单击一个按钮,几秒钟后就会出现动画,这可能有点奇怪。最好是预加载数据,或者用一些“加载…”的东西预填充div,使其大小合适,然后在到达时填充实际内容。

    在给出答案的帮助下,最终解决方案如下:

    添加另一个按钮并隐藏它

    <input id="btnHdn" runat="server" type="button" value="button" style="display:none;" />
    

    在给出答案的帮助下,最终解决方案如下:

    添加另一个按钮并隐藏它

    <input id="btnHdn" runat="server" type="button" value="button" style="display:none;" />
    

    谢谢你。最终,解决方案非常简单。此外,我同意我将需要一个“加载屏幕”在分区。谢谢你。最终,解决方案非常简单。我也同意我将需要一个“加载屏幕”在div。这正是我的想法。如果不给AnimationXtender任何TargetControlID,会发生什么情况?这可能会简化解决方案。这正是我的想法。如果不给AnimationXtender任何TargetControlID,会发生什么情况?它可以简化解决方案。