2012-05-29 2 views
1

두 개의 업데이트 패널이 있고 둘 다 업데이트 패널이 UpdateMode = "Conditional"로 설정되어 있습니다.ASP.NET 타이머로 인해 AJAX 툴킷 SliderExtender가 오작동을 일으킴

첫 번째 업데이트 패널에는 다음이 포함

  • 이 AJAX 툴킷 SliderExtender
  • 이 해당 텍스트 상자
  • 첫 번째 업데이트 패널이 2 SliderExtender 텍스트 상자의의 TextChanged 이벤트로 비동기 설정 한

다시 게시 트리거 . 일초

두 번째 업데이트 패널의 간격

  • 3 레이블
  • 타이머 뒤에 코드를 통해 레이블의 텍스트를로드 :

    <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="tb_Slider1" EventName="TextChanged" /> 
        <asp:AsyncPostBackTrigger ControlID="tb_Slider2" EventName="TextChanged" /> 
    </Triggers> 
    

    두 번째 업데이트 패널 포함 . 두 번째 업데이트 패널에는 Timer 's Tick 이벤트가 비동기 포스트 백 트리거로 설정되어 있습니다. 나는 두 번째 업데이트 패널에서 타이머로, 첫 번째 업데이트 패널에서 슬라이더 중 하나를 스크롤하고있는 경우

    <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="tm_Timer1" EventName="Tick" /> 
    </Triggers> 
    

    틱; 슬라이더가 스스로 떨어지고 TextChanged 이벤트가 발생합니다.

    두 번째 업데이트 패널에서 부분 포스트를 사용하면 첫 번째 업데이트 패널 컨트롤이 반응하는 이유는 무엇입니까?

    나는 업데이트 패널을 닦고 있으며, 부분 포스트 백은 모든 서버 페이지 라이프 사이클 이벤트를 실행한다는 점에서 전체 포스트 백과 비슷합니다. 이로 인해 슬라이더가 오작동을 일으키는 지 확실하지 않습니다.

    어쨌든 이것을 피할 수 있습니까? 아니면 "의도대로 일하고 있습니까?"

    궁극적으로 타이머가 똑딱 거리더라도 슬라이더를 자유롭게 움직일 수 있기를 바랍니다. 이렇게하면 타이머 업데이트 패널이 자주 업데이트되며 사용자가 슬라이더 컨트롤 (예 : TextChanged)을 삭제하면 첫 번째 업데이트 패널이 업데이트됩니다.

+0

첫 번째 UpdatePanel에 지정된 UpdateMode 값은 무엇입니까? –

+0

두 패널 모두 조건부로 설정됩니다. – Mausimo

답변

1

첫 번째 updatepanel의 트리거 컬렉션에 tm_Timer1이 추가되지 않았기 때문에 틱 할 때 텍스트 상자 값과 첫 번째 UpdatePanel을 포함하여 서버에 제출 된 모든 양식의 컨트롤 값이 새로 고쳐집니다. ScriptManager 컨트롤 바로 다음에 스크립트를 추가하여이 문제를 해결할 수 있습니다.

<script type="text/javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

    var realDoPostback = __doPostBack; 
    __doPostBack = function (sender, args) { 
      if (sender === "<%= tm_Timer1.UniqueID %>") { 
       $get("<%= tb_Slider1.ClientID %>").removeAttribute("name"); 
       $get("<%= tb_Slider2.ClientID %>").removeAttribute("name"); 
      } 
      realDoPostback(sender, args); 
    } 

    function endRequestHandler(sender, args) { 
      $get("<%= tb_Slider1.ClientID %>").setAttribute("name", "<%= tb_Slider1.UniqueID %>"); 
      $get("<%= tb_Slider2.ClientID %>").setAttribute("name", "<%= tb_Slider2.UniqueID %>"); 
    } 
</script> 
+0

이 스크립트에서는 어떤 일이 일어나는지 대부분을 이해합니다. 그러나 설명하거나 추가하는 문서에 대한 링크가 있습니까? 나는 이것을 읽고 싶다. 감사! – Mausimo

관련 문제