如何在UpdatePanel上禁用自动刷新?

时间:2013-01-16 17:01:50

标签: c# asp.net .net

在UpdatePanel中,我有很多Checkbox,我需要将其设置为“AutoPostback”到“true”。

问题:

假设我在面板中有100个复选框,我正在勾选#50 checbox,然后控件自动进入页面顶部,我必须再次下来勾选另一个复选框(比如说#60)。

这对用户来说真的很烦人,我被要求停止这种自动滚动,以便他们可以停留在同一个地方并勾选另一个复选框。我怎样才能让我的网页每次都停在最前面?

有没有办法禁用这种行为?我想UpdatePanel可能是问题..如果是这样,我该如何禁用自动引用?

3 个答案:

答案 0 :(得分:0)

停止使用UpdatePanel,或将UpdateMode设置为条件

如果 UpdateMode 属性设置为条件,则在满足以下条件之一时更新UpdatePanel控件的内容:

  • 当回发是由UpdatePanel控件的触发器引起的时候
  • 当您明确调用UpdatePanel控件的Update方法
  • 当UpdatePanel控件嵌套在另一个UpdatePanel中时 控制和父面板已更新
  • ChildrenAsTriggers 属性设置为true且任何子项时 控制UpdatePanel控件会导致回发。儿童控制 嵌套的UpdatePanel控件不会导致更新外部 UpdatePanel控件,除非它们被明确定义为触发器 对于父母小组。

答案 1 :(得分:0)

没有内置方法可以做到这一点。您将不得不编写一些Javascript函数来完成此任务:

隐藏字段可以说'hfScrollvalue'(保存并重置滚动位置)

  • 编写一个JS方法“GetScrollPosition”,以获取面板的滚动位置并保存在隐藏的字段中

  • 编写JS方法“SetScrollPosition”以从隐藏字段获取滚动位置并将其设置回面板

  • 然后,您可以在请求结束时通过为此目的添加处理程序来调用SetScrollPosition方法

  • 请求结束后,更新面板再次设置滚动位置。因此,您可以在将值设置为面板滚动位置时稍微延迟一下。您可以使用Javascript的setTimeout方法来完成此操作。所以通过这个延迟,你的保存位置将在ajax处理完成后在面板上设置

    function GetScrollPosition() {
        document.getElementById('<%= hfScrollvalue.ClientID %>').value = document.getElementById('<%= Panel1.ClientID %>').scrollTop;
    

    }

    function SetScrollPosition(){

            document.getElementById('<%= Panel1.ClientID %>').scrollTop = document.getElementById('<%= hfScrollvalue.ClientID %>').value; 
        } 
    } 
    
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest); 
    
    function EndRequest(sender, args) { 
    
        setTimeout('SetScrollPosition()', 60); 
    }
    

    如果你正在使用一个TextBox,它在UpdatePanel中,也与Timer绑定,那么你可以这样:

    Sys.Application.add_init(DownloadInit);
    
    function DownloadInit(sender) {
    
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest);
    
    }
    
    function SetScrollPosition() {
    
        var textArea = document.getElementById('<%=TextBox1.ClientID%>');
    
        textArea.scrollTop = textArea.scrollHeight;
    
    }
    
    function EndRequest(sender, args) {
    
         SetScrollPosition();
    
    }
    

答案 2 :(得分:0)

在页面指令

中添加以下内容

MaintainScrollPositionOnPostback = “真”