2013-01-16 2 views
0

UpdatePanel 안에는 많은 체크 박스가 있는데 'AutoPostback'을 "true"으로 설정해야합니다.UpdatePanel에서 자동 새로 고침을 사용 중지하는 방법은 무엇입니까?

문제 :

말 (의 내가 패널 (100 개) 체크 박스가 나는 # 50 checbox에 체크하고하면 다음 컨트롤이 자동으로 페이지의 상단으로 이동합니다 내가 다른 확인란을 선택 다시 내려 와야 가정 해 봅시다 # 60).

이것은 사용자에게 정말로 짜증나며, 자동 스크롤을 중지하여 같은 장소에 머물러 있고 다른 체크 박스를 선택하도록 요청합니다. 매번 웹 페이지가 멈추게 할 수 있습니까?

이러한 동작을 비활성화하는 방법이 있습니까? 나는 UpdatePanel이 문제가 될 수 있다고 생각해. 만약 그렇다면, 자동 참조를 어떻게 비활성화 할 수 있습니까?

+0

당신이 UpdatePanel에서 체크 박스를 넣어해야합니까? 아마도 그것들을 그것의 외부에 두지 만 AsyncTriggers로 등록 할 수 있습니다. – Malk

답변

0

UpdatePanel 사용을 중지하거나 UpdateMode를 조건부으로 설정하십시오. UpdateMode를 속성이 조건부로 설정되어

경우, UpdatePanel 컨트롤의 내용은 다음 중 하나에 해당하는 경우 업데이트됩니다 다시 게시가 해당 UpdatePanel 컨트롤에 대한 트리거로 인해 발생

  • UpdatePanel 컨트롤의 Update 메서드를 명시 적으로 호출 할 때
  • UpdatePanel 컨트롤이 다른 UpdatePanel 컨트롤 안에 중첩되어 있고 부모 패널이 upd 인 경우 ated
  • ChildrenAsTriggers 속성이 true로 설정되고 자식 UpdatePanel 컨트롤을 제어하면 포스트 백이 발생합니다. 자식 컨트롤 중첩 된 UpdatePanel 컨트롤은 부모 패널에 대해 트리거로 명시 적으로 정의되어 있지 않으면 외부 UpdatePanel 컨트롤로 업데이트하지 않습니다.
+0

토마스, UpdateMode 속성을 'Conditional'로 설정했지만 작동하지 않습니다. UpdatePanel 내의 체크 박스는 'AutoPostBack'에 대해 "true"로 설정됩니다. 페이지에 문제가 있습니까? – AtitStack

0

이렇게하는 방법은 없습니다. 에,

숨겨진 필드가 JS 방법 "GetScrollPosition"를 쓰기

  • 을 (스크롤 위치를 저장하고 재설정) 'hfScrollvalue'을 말할 수 있나요 : 당신이 달성하기 위해 몇 가지 자바 스크립트 함수를 작성해야합니다 패널의 스크롤 위치를 얻을하고 숨겨진 필드

  • 에 저장 숨겨진 필드에서 스크롤 위치를 얻을 패널

  • 당신을 다시 설정하는 JS 방법 "SetScrollPosition"를 쓰기 이 목적을 위해 처리기를 추가하여 요청이 끝나면 SetScrollPosition 메서드를 호출 할 수 있습니다.

  • 요청이 끝나면 스크롤 패널의 위치가 다시 설정됩니다. 따라서 패널 스크롤 위치에 값을 설정하는 데 약간의 지연을 줄 수 있습니다. Javascript의 setTimeout 메소드를 사용하면됩니다.아약스 처리가

    기능 SetScrollPosition()

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

    을} 완료 후 그래서이 지연으로 저장된 위치가 패널에 설정됩니다 {

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

    당신은 텍스트 상자로 작업하는 경우 , UpdatePanel 내부에 있는데 타이머와 연결되어 있다면 다음과 같이 할 수 있습니다 :

    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(); 
    
    } 
    
0

는 페이지 지시문에 아래 추가

MaintainScrollPositionOnPostback = "true"를

+0

이 질문에 대답하지 않습니다. – dario

관련 문제