2012-08-22 3 views
0

테이블이있는 html 페이지가 있습니다. 단순화하면 다음을 볼 수 있습니다.동적 업데이트 테이블 값 (C#, MVC3, JavaScript)에 대한 조언이 필요합니다.

<Row_ID>, <bla-bla-bla>, <_XXX.XX%_ is complete> 

C#에는 "% 완료되었습니다"라는 ID가있는 기능이 있습니다. 하지만 작업이 몇 번 걸릴 수 있습니다 (즉각적이지 않고 지연이 발생할 수 있음)

이제 1 ~ 2 분 간격으로 데이터를 업데이트하는 "% 완료"자동 실행을 구현해야합니다. 전체 페이지 나 전체 테이블을 다시로드하고 싶지 않습니다 (아약스로 작성한 경우). 사용자가 페이지를 볼 수 있기 때문에 재로드가 현재 위치 (또는 테이블의 행 수까지)를 제동합니다.

그래서 일부 함수를 호출하고 JSON에 의해 ​​서버에서 값을 가져 오는 javascript setTimeout을 생각해 봅니다.하지만 자바 스크립트 함수가 데이터를 요청할 때 웹 페이지 동결에 대해 확신하지 못합니다. 다른 업데이트 방법이있을 수 있습니까?

모든 버전이나 제안을 환영합니다!

내 부러진 영어로 죄송합니다.

+0

ajax 요청으로 페이지가 고정되지 않습니다. "A"비동기에 대한 ... 나는 당신의 전략에 가서 결과를 측정 할 것입니다. – Humberto

+0

나는 그것에 대해 생각했다. 이것은 작동합니다 : 1. 함수는 setTimeout (또는 setInterval)에서 호출하고 내부에서 $ .ajax (... SomeFunc2 ..)를 호출합니다. SomeFunc2를 "병렬"therad로 시작 했습니까? –

+0

아니면 ... SomeFunc2가 같은 스레드에서 작동하지만 호출 만 비동기가됩니다. 나는 그것을 시험 할 필요가있다. .. 고마워. –

답변

1

이것은 사용자가 의미하는 바를 달성해야합니다. 여러 결과 (가장 효율적인)의 JSON 결과를 반환하는 단일 호출을한다고 가정합니다. 또한 jQuery ajax 호출은 비동기식이므로 페이지가 '고정'되지 않습니다. MVC 모델 설정에서도 추측 할 수 있지만 아이디어를 얻은 것 같습니다.

<table> 
    @foreach(var line in Model) 
    { 
    <tr> 
     <td>@line.Id</td> 
     <td>@line.Something</td> 
     <td id="[email protected]">@line.Percentage% complete</td>     
    </tr> 
    } 
</table> 

JS :

var to; 
$().ready(function() { 
    ResetUpdate(); 
}); 

function Update() { 
    // do your $.ajax(); 
    // if success, 
    // assuming return data is an array like: 
    var data = [ {id:1, p:26}, {id:2, p:99} ]; 
    for(var i = 0; i < data.length; i++) { 
     $('#p-' + data[i].id).html(data[i].p + '% complete');    
    } 
    ResetUpdate(); 
} 

function ResetUpdate() { 
    to = setTimeout("Update()", 120000); //2 minutes 
} 

Here is the jsFiddle.

+0

바이올린을 올바른 포크로 업데이트했습니다. 죄송합니다. – naspinski

+0

예, 이런 것 같아요. –