2010-04-14 4 views
1

저는 same problem I had yesterday을 가지고 있습니다 ... Aristos가 제공 한 솔루션이 문제를 해결하는 데 도움이되었지만 다른 곳에서 동일한 문제를 일으키는 updatepanel 포스트 백을 보내고 있습니다.여러 개의 업데이트 패널과 여러 개의 포스트 백이 전체 페이지를 새로 고칩니다.

첫 번째 업데이트를 렌더링하기 전에 업데이트 패널이 업데이트되고 다른 업데이트 요청이 호출되면 전체 페이지가 업데이트 패널 대신 새로 고쳐집니다.

나는 무슨 일이 있었는지보고 fiddler를 사용하고 여기에서 발생하는 상황 ... 요청이 나는이 얻을 또 다른 요청하기 전에 반환 할 기다릴 경우

21443 | updatePanel을 | dnn_ctr1107_CRM_SalesTool_LeadsUpdatePanel | pageRedirect || |

66 : 난 기다릴하지 않는 경우

는하지만,이 얻을 http://mysite.com/salesdashboard.aspx|

previous question에서의 코드는 여전히 업데이트 패널에 UpdateMode="Conditional" 추가를 제외하고는 동일합니다.

아이디어가 있으십니까? 아니면이 같은 문제를 해결할 수있는 유일한 해결책은 업데이트 패널 수에 상관없이 2 개 이상의 업데이트가 (동일한 페이지에있는 한) 발생하지 않도록하는 것입니다.

감사합니다,
매트

+0

SSDC (동일 코드 ... 다른 코드?) 다시는 그렇지 않습니다. – Aristos

+0

@ 다시 기다리는 것이 허용 될 때까지 기다리거나 클릭을 차단 하시겠습니까? – Aristos

+0

오 이런, 또 너! 어제 도와 줘서 고마워. wait/block은 작동하지 않습니다. 문제는 매초마다 updatepanel을 업데이트하는 타이머를 가지고 있기 때문에 타이머 틱 시간에 요청을하면 페이지가 새로 고칩니다 ... 다른 해결책은 없습니까? – Matt

답변

0

그가 다시 포스트마다 무엇인지 알 필요가있다, 그래서 아마 그가 복귀를 기다릴 때 클릭하면 때문에 자동 아약스가 동시에이 요청을 처리 할 수 ​​어쩌면 마이크로 소프트 , 그 후에 그는 포스트가, 변화가다는 것을, 그래서 그가 정확한 반환을 위해 soure이기 위하여 통과 아약스에 의하여 cognizes.

나는 두 가지 방법으로 생각할 수 있습니다. 한 가지 방법은 jQuery와 ajax를 사용하여 자습서를 작성하고 UpdatePanel을 피하는 것입니다.

두 번째 방법은 반환을 기다릴 때 클릭을 차단하거나 요청을 처리 할 메커니즘을 만드는 것입니다.

이 코드는 당신이 그것을 해제 할 때 입력을 차단하고 때 당신이 알고 도움이, 또는 당신이 생각하는 무엇도 할 수 있습니다.

$(document).ready(function() { 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 

    prm.add_initializeRequest(InitializeRequest); 
    prm.add_endRequest(EndRequest); 
}); 

function InitializeRequest(sender, args) { 
    LastIdCaller = args.get_postBackElement().id;  
} 

function EndRequest(sender, args) { 
} 
0

내가 틀릴 수도 있지만 asp.net WebForms를 사용하는 경우 여러 권의 아약스 요청을 할 수 없습니다. asp.net WebForms에는 한 페이지에 Form 요소가 하나만 있습니다. 같은 페이지에서 여러 개의 ajax 요청은 각각에 대해 여러 개의 양식 요소를 필요로합니다. HTML은 양식 요소 안에 다시 게시하도록 설계되었으며 상기 다시 게시를 처리하는 메커니즘은 양식이며 컨테이너입니다. 한 번에 한 명만 게시 할 수 있습니다. 따라서 Asp.Net WebForms에는 페이지 당 하나의 양식 요소 만 있기 때문에 페이지 당 1 개의 아약스 포스트 백만 수행 할 수 있습니다.

선택적으로 양식 로직을하고 일반 HTTP를 핸들러에 다시 게시 할 JQuery와 Ajax를 사용하는 일반적인 ASHX의 HTTP 처리기를 만들 수 있습니다. 어떤 경우에는 한 번에 원하는만큼 많은 작업을 수행 할 수 있습니다.

일반적으로 나는 ASHX 처리기 내가 비행 영상에 같이 변경 이미지를 제공해야하는 시간 사용할 수 있습니다. 나는 또한 큰 데이터 출력을 위해 그것들을 사용한다. 예 : ASHX 핸들러는 JSON의 큰 덤프를 리턴합니다.JSON에서 데이터 집합을 가져 와서 테이블에 추가하는 Ajax 포스트 백을 수행하고 ASHX 핸들러를 타이머에 반복적으로 호출하여 새 데이터를 가져옵니다 (예 : 5 분 타이머).

당신이하려는 일에 대해 더 많은 맥락을 드린다면 다른 해결책을 제시 할 수있을 것입니다.

편집 : 링크 된 다른 게시물을보고 ASHX 처리기가 도움이 될 것 같습니다. JSON에서 검색 데이터를 반환하도록 ASHX 핸들러를 디자인 할 수 있습니다. ASHX 핸들러에서 요청 변수를 사용할 수 있으며 JQuery.Ajax를 사용하여 ASHX 핸들러에 포스트 데이터를 보낼 수 있습니다.

각자의 성공 기능으로 여러 요청을 실행할 수 있어야합니다. 그런 다음 JSON 데이터를 ashx 핸들러에서 처리하면서 다른 요청과 병합 할 수있는 방식으로 자바 스크립트를 작성해야합니다.

관련 문제