2010-01-07 4 views
1

이 작업은 쉬워야하지만 저를 곤란하게합니다.하나의 함수에서 화면 요소를 여러 번 업데이트합니다.

하나의 기능으로 화면에서 요소를 여러 번 변경하려면 어떻게해야합니까?

내 기능의 시작 부분에서 "시작 ..."과 같은 내용을 읽으려면 라벨을 바꾸고 싶다. 그런 다음 몇 가지 작업을 한 다음 끝에 "끝내기"레이블을 변경하십시오. 그림으로

이유는 다음 코드 않습니다

 errorMessage.Text = "Three..."; 
     System.Threading.Thread.Sleep(1000); 
     errorMessage.Text = "Two..."; 
     System.Threading.Thread.Sleep(1000); 
     errorMessage.Text = "One..."; 
     System.Threading.Thread.Sleep(1000); 
     errorMessage.Text = "Go!"; 
     System.Threading.Thread.Sleep(1000); 

은 단 4 초 동안 일시 정지 후 할 수있는 레이블 텍스트 변경 "이동!" 카운트 다운보다는?

TIA

답변

2

코드가 화면을 한 번만 업데이트하는 이유는이 코드가 단일 포스트 백 내부에서 실행되고 있기 때문입니다. 다시 게시가 끝나면 HTML이 렌더링되어 브라우저로 반환되어 표시됩니다.

실제로 다시 게시하는 동안 페이지를 여러 번 업데이트하면 은 쉽게이 아닙니다. 그러나 당신이하고있는 일에 더 쉬운 해결책이 있습니다. 요청을 시작할 때 JavaScript를 사용하여 캡션을 "Starting ..."으로 변경 한 다음 메서드를 "Finished"로 되돌립니다.

+0

@Craig, 고맙습니다. 내 자신이 엉망이되고 있어요 - 내 단추에 Javascript AND C# 이벤트를 추가하는 방법은 무엇입니까? – Ben

1

는 웹 페이지이며, 최종 값이 브라우저로 전송되는 것입니다 때문입니다. 모든 서버 측 코드가 실행되고 최종 값이 브라우저로 전송됩니다.

코드가 서버의 새 값으로 컨트롤을 업데이트하고 있지만 클라이언트에서 코드를 볼 수 없습니다. 당신이 원하는 것을하기 위해서, 클라이언트 측 스크립트 (자바 스크립트)를 통해 컨트롤을 업데이트하거나, 페이지를 새로 고침하고 업데이트 된 값을 표시해야합니다.

다음은 asp.net 페이지 수명주기에 대한 링크로, 사용자가 묻는 내용입니다.

http://msdn.microsoft.com/en-us/library/ms178472.aspx

당신은 아무것도 눈치 채지 못할 경우

은 렌더링 방법까지 브라우저로 전송됩니다.

0

ASP.NET의 경우 브라우저에 HTML을 보내기 전에 모든 코드가 실행되므로 마지막 값만 표시됩니다. 당신이 클라이언트 쪽에서 그것을하고 싶다면 당신은 약간의 자바 스크립트를해야 ​​할 것입니다.

1

웹의 작동 원리에 대해 알아야합니다.

  1. 이 브라우저는 서버가 페이지를 전송 (및 ASP.net 일부 서버 측 처리를 할 수 있습니다)
  2. 클라이언트가 페이지를 보여 주며에서 자바 스크립트를 실행하는 서버
  3. 에서 페이지를 요청 페이지

이러한 자바 스크립트는 페이지를로드 한 후에 변경 될 수 있지만 2 단계는 이미 클라이언트로 전송 된 내용을 변경할 수 없습니다.

3

프로세스 시간을두고 결과를 레이블에 넣으려면 대신 함수에서 문자열을 사용해야합니다.당신은 당신이 자바 스크립트 솔루션 또는 비동기 업데이트를 보라 단위로 UI 버튼을 업데이트하려는 경우

string countDownTimes = ""; 
countDownTimes += String.Format("One at: {0}, ",DateTime.Now.ToString()); 
System.Threading.Thread.Sleep(1000); 
countDownTimes += String.Format("Two at: {0}, ",DateTime.Now.ToString()); 
//etc.. 
errorMessage.Text = countDownTimes; 

: 이런 식으로 뭔가를 시도하십시오.

관련 문제