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,会发生什么情况?它可以简化解决方案。