ASP.NET Ajax显示最短时间内的UpdateProgress控件

ASP.NET Ajax显示最短时间内的UpdateProgress控件,asp.net,asp.net-ajax,updateprogress,Asp.net,Asp.net Ajax,Updateprogress,有时我的ajax请求太快,以至于用户没有意识到发出了ajax调用。因此,我想强制UpdateProgress控件至少显示一段时间,即使ajax请求已经完成 例如: John浏览站点,ajax调用需要2秒钟才能完成。我只希望UpdateProgress控件在这2秒钟内显示 Mary也浏览该站点,但ajax调用需要>0.5秒。所以我想显示UpdateProgress控件至少1秒钟 有人知道怎么做吗 编辑 我发现Telerik提供的AjaxLoadingPanel控件具有这种能力。它有一个名为MinD

有时我的ajax请求太快,以至于用户没有意识到发出了ajax调用。因此,我想强制UpdateProgress控件至少显示一段时间,即使ajax请求已经完成

例如:

John浏览站点,ajax调用需要2秒钟才能完成。我只希望UpdateProgress控件在这2秒钟内显示

Mary也浏览该站点,但ajax调用需要>0.5秒。所以我想显示UpdateProgress控件至少1秒钟

有人知道怎么做吗

编辑

我发现Telerik提供的AjaxLoadingPanel控件具有这种能力。它有一个名为MinDisplayTime的属性,可以做这件事。如果知道如何使用标准(免费)asp.net ajax控件实现这一点,那就太好了

谢谢


我在一个intranet站点上工作时遇到了同样的问题,
UpdatePanel
的内容变化如此之快,以至于在没有调试或检查数据库的情况下,我无法判断是否发生了更新

我解决这个问题的方法是让UpdatePanel像以前一样做它的事情,但是使用
UpdatePanelAnimationExtender
来短暂地闪烁背景颜色的变化,例如,在淡出到正常状态之前,给用户一个动作已经发生的印象。如果这种情况发生得很快,比如说0.3秒,并且选择了合适的“动作”颜色,这可能非常有效

<ajaxToolkit:UpdatePanelAnimationExtender ID="myUpdatePanelExtender" runat="server" TargetControlID="myUpdatePanel">
     <Animations>
        <OnUpdating> ... </OnUpdating>
        <OnUpdated> ... </OnUpdated>
    </Animations>
</ajaxToolkit:UpdatePanelAnimationExtender>

在一个intranet站点上工作时,我遇到了同样的问题,
UpdatePanel
的内容变化如此之快,以至于在没有调试或检查数据库的情况下,我无法判断是否发生了更新

我解决这个问题的方法是让UpdatePanel像以前一样做它的事情,但是使用
UpdatePanelAnimationExtender
来短暂地闪烁背景颜色的变化,例如,在淡出到正常状态之前,给用户一个动作已经发生的印象。如果这种情况发生得很快,比如说0.3秒,并且选择了合适的“动作”颜色,这可能非常有效

<ajaxToolkit:UpdatePanelAnimationExtender ID="myUpdatePanelExtender" runat="server" TargetControlID="myUpdatePanel">
     <Animations>
        <OnUpdating> ... </OnUpdating>
        <OnUpdated> ... </OnUpdated>
    </Animations>
</ajaxToolkit:UpdatePanelAnimationExtender>

您可以通过跟踪服务器端代码执行所需的时间来解决后者(或者通过测量ajax执行时间更好,但这更复杂)

想法是这样的

long startTime = System.DateTime.Now.Ticks;
//this process can take some time, especially when executed for the first time
//it gets data and binds it to a control
FetchData();
//if this takes not enough time, add an extra second to allow the UpdateProgress to display
if (TimeSpan.FromTicks(DateTime.Now.Ticks - startTime).TotalSeconds < 1)
            System.Threading.Thread.Sleep(1000);
long startTime=System.DateTime.Now.Ticks;
//此过程可能需要一些时间,尤其是第一次执行时
//它获取数据并将其绑定到控件
FetchData();
//如果这不需要足够的时间,请额外添加一秒钟以允许UpdateProgress显示
if(TimeSpan.FromTicks(DateTime.Now.Ticks-startTime).TotalSeconds<1)
系统线程线程睡眠(1000);

您可以通过跟踪服务器端代码的执行时间来解决后者(或者更好地通过测量ajax执行时间,但这更复杂)

想法是这样的

long startTime = System.DateTime.Now.Ticks;
//this process can take some time, especially when executed for the first time
//it gets data and binds it to a control
FetchData();
//if this takes not enough time, add an extra second to allow the UpdateProgress to display
if (TimeSpan.FromTicks(DateTime.Now.Ticks - startTime).TotalSeconds < 1)
            System.Threading.Thread.Sleep(1000);
long startTime=System.DateTime.Now.Ticks;
//此过程可能需要一些时间,尤其是第一次执行时
//它获取数据并将其绑定到控件
FetchData();
//如果这不需要足够的时间,请额外添加一秒钟以允许UpdateProgress显示
if(TimeSpan.FromTicks(DateTime.Now.Ticks-startTime).TotalSeconds<1)
系统线程线程睡眠(1000);

Hi–这个解决方案的问题是,即使Ajax调用已经花了2秒执行,我也会额外增加3秒。如果Ajax调用花费的时间少于一定的时间,我只想在更长的时间内显示UpdateProgress控件。您好–此解决方案的问题是,即使Ajax调用已经花费了2秒来执行,我也会额外增加3秒。如果Ajax调用花费的时间少于一定的时间,我只想显示UpdateProgress控件更长的时间。还有人有什么想法吗?有人有什么想法吗?+1以前没有想过使用UpdatePanimationExtender。虽然它不能解决上面描述的特定问题,但它提供了另一个选项,告诉用户发生了什么事情。当然,你是对的:它更像是对你的问题的横向解决方案。但它也有其他优势,例如:如果页面上有几个小的更新区域受到某些按钮或控件的影响,那么如果页面繁忙,用户可能不会注意到这些区域。0.5秒后褪色的一小段颜色会提醒他们页面上的任何状态更改+1以前没有想到使用UpdatePanimationExtender。虽然它不能解决上面描述的特定问题,但它提供了另一个选项,告诉用户发生了什么事情。当然,你是对的:它更像是对你的问题的横向解决方案。但它也有其他优势,例如:如果页面上有几个小的更新区域受到某些按钮或控件的影响,那么如果页面繁忙,用户可能不会注意到这些区域。0.5秒后褪色的一小段颜色会提醒他们页面上的任何状态变化