2012-05-15 4 views
0

리피터가 Html 테이블로 구성되었습니다. 미리보기는 다음과 같습니다.업데이트 패널, 업데이트 방법으로 컨트롤이 업데이트되지 않습니다.

| No | Name | Status | 
-------------------------------- 
| 1. | Process A | In Progress | 
| 2. | Process B | In Progress | 
| 3. | Process C | In Progress | 
| 4. | Process D | In Progress | 
... 
| n. | Process N | In Progress | 
-------------------------------- 

리피터를 업데이트 패널에 배치했습니다.

버튼을 클릭하면 양식에서 이러한 보내기 기능을 호출합니다. 이 함수는 각 행마다 반복되고 상태 텍스트를 "진행 중"에서 "보낸"으로 설정합니다. 프로세스가 약 2 초라고 가정합니다. 상태 텍스트가 할당 된 후 UpdatePanel.Update()를 통해 Repeater의 상태 텍스트를 업데이트하려고하지만 문제점이 업데이트되지 않았습니다. 함수가 완료된 후 업데이트됩니다.

센드 기능은 다음과 같이이다 :

protected void btnSend_Clicked(object sender, EventArgs e) 
    { 
     foreach (RepeaterItem item in rptData.Items) 
     { 
      UpdatePanel upnlStatus = (UpdatePanel)item.FindControl("upnlStatus"); 
      Literal litStatus = (Literal)item.FindControl("litStatus"); 
      System.Threading.Thread.Sleep(2000); 
      litStatusText = "Sent"; 
      upnlStatus.Update();     
     } 
    } 

내 질문이 일을 할 수있는 가장 좋은 방법은 무엇입니까? 업데이트 패널은 이러한 종류의 실시간 업데이트를 지원합니까? 미리 감사드립니다.

답변

0

Update를 패널의 AsyncPostback의 패턴은

  1. 클라이언트가 요청
  2. 서버는 클라이언트가

그래서 업데이트됩니다

  • 작업을 할 수 있도록 그것은이 완료되는 것을 기다려 각 AsyncPostback 사이에 서버 프로세스가 서버 상에 존재하지 않기 때문에 서버의 작업 실행에서 클라이언트의 업데이트를 트리거 할 수 없습니다. 전체 페이지가 각 AsyncPostback 사이의 뷰 상태에서 다시 작성됩니다.

    원하는 작업을 수행하려면 비동기 적으로 작업을 시작하고 나중에 결과를 검색해야합니다. 이렇게하는 일반적인 방법은 Web Service입니다. this도 확인하십시오.

  • +0

    감사합니다. @ DavRob60 :) 하지만 WebService없이이 작업을 수행 할 수 있습니까? C#에서 비동기 메서드에 대해 들었습니다. C# Async 서버 메서드를 통해이 부분 렌더링을 수행 할 수 있습니까? 감사합니다. –

    +0

    @WillyLazuardi 이것은 단순화되었지만 "비동기 서버 메소드"는 웹 서비스의 일부입니다. 세부 사항을 설명하는 데 많은 시간이 걸릴 것입니다. – DavRob60

    관련 문제