2014-06-05 2 views
0
for (i = 0; i < 10; i++) 
    { 
     len = (i*30).ToString(); 
     System.Threading.Thread.Sleep(200); 
     progressbar.Style.Add("width", len + "px"); 
     txtlbl.InnerHtml = len+'%'; 

     System.Threading.Thread.Sleep(200); 
     //htmlDivControl.Style["width"] =Convert.ToString("10"); 
       //Item("width") = i.ToString + "px" 
    } 

이것은 C#의 코드 배후 코드입니다. html로 div 태그를 만들었습니다. 그리고 progress bar를 만들기 위해 sleep 메소드를 사용하여 주기적으로 폭을 늘리십시오. 루프 완료가 끝날 때만 진행률 막대가 보입니다. 너비가 증가함에 따라 단계별로 진행률 막대가 단계적으로 보입니다. 여기에 문제가 있습니다. 제발 도와주세요.Thread.Sleep 메서드

+2

앞에서 말했듯이 이것은 서버에서 실행되는 "배후 코드"입니다. 당신이 찾고있는 것은 클라이언트에서 실행되는 자바 스크립트 코드입니다. – HABJAN

+1

ASP.NET은 html을 렌더링하는 서버 측 기술이므로 페이지 라이프 사이클이 끝나면 html이 클라이언트로 전송됩니다. 어쩌면 당신은 일부 jQuery 플러그인을 사용할 수 있습니다. –

답변

2

서버 측 코드를 사용하여이 작업을 수행 할 수 없습니다. 이것은 자바 스크립트에서 클라이언트 측에서 수행되어야합니다.

ASP.NET은 브라우저로 보내지는 큰 문자열을 작성한다고 생각하십시오. 페이지가 라이프 사이클을 거치면서 끝까지 브라우저로 전송되는 하나의 문자열 만 빌드하면됩니다. 따라서 코드가 Prerender 이벤트가 완료 될 때 페이지를 떠나는 상태는 브라우저에 전달되는 상태입니다. 그래서 당신은 당신의 진도 표시 줄의 "최종"상태 만 볼 수 있습니다.

다음은 시작 지점으로 사용할 수있는 jQuery 진행률 표시 줄에 대한 링크입니다. http://jqueryui.com/progressbar/

1

서버 측 코드를 사용하여 클라이언트 측에서 실행될 작업을 수행하려고합니다. 서버 측 코드는 단순히 정적 HTML을 클라이언트 (예 : 브라우저)에 출력하고 실행을 중지합니다. 렌더링되기 전에 HTML을 조작 할 수 있습니다. 그러나이 시점 이후에는 이러한 종류의 대화 형 조작을 수행하기 위해 Javascript (클라이언트 측 언어 인 경우)를 사용해야합니다.

코드는 기본적으로 을 실행 한 후 페이지가 클라이언트에 제공되기 때문에이 조작의 최종 결과 만 볼 수 있습니다.

OnLoad 이벤트에서 (즉, 페이지가 클라이언트에로드 된 후) 자바 스크립트를 사용하여이 C# 코드의 변형을 실행할 수 있습니다. 그러나이 조작에 jQuery를 사용하는 것이 훨씬 더 간단합니다.

0

다른 사람들처럼 ASP 기술은 서버에서 일부 처리를 수행하고 HTML 응답을 클라이언트에 보냅니다. 따라서 UI를 변경하려면 클라이언트 측 Javascript 코드를 추가해야합니다.

여기에 하나의 접근법 (JQuery 사용)이 있습니다 (피들 : http://jsfiddle.net/5arx/g8kF9/). 기본적으로 x 밀리 초마다 코드를 실행하기 위해 setInterval 함수를 사용합니다.

<div class='expando' id='expando'> 
</div> 

<p id='pOut'>0s</p> 

var msg = 20;//global 

setInterval(
    function()//the code that will be executed 
    { 

     $('#pOut').text(msg++ + 's'); 
     $('#expando').css('height', msg * 1.5); 

    } 
    , 1000);//interval time in milliseconds