有没有办法为某些异步回发禁用 UpdateProgress?

Posted

技术标签:

【中文标题】有没有办法为某些异步回发禁用 UpdateProgress?【英文标题】:Is there a way to disable UpdateProgress for certain async postbacks? 【发布时间】:2011-09-12 01:07:55 【问题描述】:

我有一个 UpdateProgress 控件,它显示为更新面板的所有异步事件的叠加层(使用 CSS)。现在,对于某些 EXPAND/COLLAPSE 行命令事件,我只是不想显示更新进度。

有办法吗?

【问题讨论】:

在没有看到任何代码的情况下,听起来您应该能够将事件处理程序绑定到任何触发展开/折叠的事件。是点击事件吗?请发布您的代码。 事件绑定好了,它只是我不想为包含在该更新面板中的 gridview 的某些 RowCommand 事件显示的 UpdateProgress 覆盖 1.) 如果可能,请使用多个 UpdatePanel。 UpdateProgress-Control 有一个属性AssociatedUpdatePanelID。将 ID 设置为 UpdateProgress 为其显示状态的 UpdatePanel,并且不要对行命令的 UpdatePanel 使用 UpdateProgress 控件。 2.) 玩转DisplayAfter 属性,该属性指示何时显示UpdateProgress。也许这已经足够了。 3.) 自己触发UpdateProgress,看this link看技术。 【参考方案1】:
<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_initializeRequest(InitializeRequest);

    function InitializeRequest(sender, args) 
        var updateProgress = $get('UpdateProgress1');
        var postBackElement = args.get_postBackElement();
        if (postBackElement.id == '<%= Button1.ClientID %>') 
            updateProgress.control._associatedUpdatePanelId = 'dummyId';
        
        else
            updateProgress.control._associatedUpdatePanelId = null;
        
    

</script>

【讨论】:

好极了。很好理解并正确回答了这一点。谢谢【参考方案2】:

我发现这对我有用,因为 Response.Redirect 会阻止重新加载原始页面,因此不会关闭 UpdateProgress..

在有问题的控件上添加

OnClientClick="disableProgress()"

然后把这个javascript放到页面上

<script type="text/javascript">

function disableProgress() 

var updateProgress = $get('<%=UpdateProgress1.ClientID%>');
var originalID = updateProgress.control._associatedUpdatePanelId;
updateProgress.control._associatedUpdatePanelId = 'dummyId';

setTimeout(function ()  updateProgress.control._associatedUpdatePanelId = originalID; , 1000);


</script>

这会暂时禁用 UpdateProgress 控件,然后在 1 秒后在客户端异步重新激活它。

【讨论】:

以上是关于有没有办法为某些异步回发禁用 UpdateProgress?的主要内容,如果未能解决你的问题,请参考以下文章

从更新面板异步回发后保持滚动位置

webforms 所有执行异步回发的子节点,即使 updatemode 设置为条件

在回发期间启用/禁用 Asp.net Image 按钮

有没有办法在禁用的 QWidget 上显示工具提示

__DoPostback 在进行部分回发时回发禁用控件的值

[Dead]如何使用异步回发成功 POST 到旧的 ASP.NET 站点