2009-03-11 3 views
0

제목은 문제를 요약하려고 시도하지만 더 자세한 요약은 다음과 같습니다. 웹 페이지는 직사각형보고 위젯으로 시각적으로 렌더링되는 사용자 정의 컨트롤 모음이며, AJAX 업데이트 패널에서 설정됩니다. 우리는 사용자가 위젯을 페이지의 미리 설정된 "영역"으로 드래그 앤 드롭 할 수있는 기능을 제공합니다.ASP.Net, 드래그 앤 드롭, 포스트 백 및 컨트롤 ID

드래그 앤 드롭 기능이 제대로 작동합니다. 웹 서비스에 대한 AJAX 호출을 사용하여 지속성에 대한 사용자의 새로운 설정으로 데이터베이스를 업데이트합니다.

그러나 "위"는 위젯 중 하나에서 포스트 백을 수행 할 때 발생합니다. 포스트 백이 서버로 보내지면 업데이트가 렌더링되어 클라이언트에 보내집니다 (모두 updatePanel로 인해 AJAX를 통해 전달됩니다). 문서 계층 구조가 변경되었지만 컨트롤 ID가 클라이언트에서 업데이트되지 않았기 때문에 클라이언트에서 "UpdatePanel with ID ...를 찾을 수 없습니다"라는 메시지가 나타납니다.

우리는이 link text에 대한 Rick Strahl의 해결책을 시도했는데, 클라이언트에서 정적 제어 ID를 만들 수있었습니다. 이것은 다시 게시 기능을 중단하지만 isPostBack 속성이 설정되어 있지 않습니다. 서버가 제어 ID를 알려진 계층 구조 요소와 일치시킬 수 없기 때문에 가정합니다.

자바 스크립트를 사용하여 드래그 앤 드롭 한 후 클라이언트 측에서 컨트롤 ID를 재설정 할 가능성이 있습니다. 분명히 이것은 .Net의 명명 알고리즘을 복제해야 할 것입니다. 똑똑하지는 않습니다. 우리는 생각하고 있습니다. 어쩌면 우리는 별도의 updatepanel을 사용하고 서버가 떨어졌을 때 새로운 컨트롤 ID를 보내 줄 것을 요청할 수 있습니까?

분명히 우리는 아이디어가 부족합니다.

나는 이것이 너무 길다는 것을 알고 있으며, 행복하게 편집하고, 코드 샘플 등을 제공하여 도움을 줄 것입니다. 미리 감사드립니다.

답변

0

을하는 데 도움이 , 당신이 다시 게시 UpdatePanel의 ID를 검사하고 예상되는 이드입니까? 당신은 다시 게시 포인터, 리차드에 대한

<script type="text/javascript"> 

    function pageLoad(sender, args) 
    { 
     var prm = Sys.WebForms.PageRequestManager.getInstance(); 

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

     //fires when an async postback is initialized 
     function InitializeRequest(sender, args) 
     { 
     alert(args._postBackElement.id) 
     } 

     //fires when an async postback is complete 
     function EndRequest(sender, args) 
     { 
     alert(sender._postBackSettings.sourceElement.id) 
     } 
    } 

</script> 
+0

아이디어에 감사드립니다, 러스. 우리는이 사건들을 해고 할 수 없었습니다. AJAX는 어떻게 든 처리기를 우회합니까? – RobLinx

+0

내가 이해하는 한, 어떤 종류의 포스트 백이 시작될 때 이러한 이벤트가 클라이언트 측에서 발생합니다. PageRequestManager JavaScript 객체는 UpdatePanel에 의해 시작된 서버에 대한 비동기 포스트 백을 처리합니다. –

+0

페이지로드시 이벤트 핸들러를 추가하는 방법에 대한 답을 수정했습니다. –

0

WebPart라고하는 드래그 가능한 페이지 요소에 대해 ASp.Net의 내장 시스템을 사용할 수 있습니다.

시스템은 포스트 백으로 작동하고 같은 webparts 자습서에 대한 검색 가지고 쉽게 비주얼 스튜디오

로 구현 될 수있다

http://www.ondotnet.com/pub/a/dotnet/2005/01/10/liberty.html

희망이 그냥 관심 밖으로

+0

감사를 시작하는 컨트롤의 ID를 검사하기 때문에 같은 ASP.NET AJAX의 client page lifecycle에 연결할 수 있습니다! 우리는 WebPart를 처음부터 간단히 평가했으며 학습 곡선이 가파른 것이라고 생각했습니다. 아마도 우리가 오산 한 것일까 요? – RobLinx