2009-11-04 4 views
1

데이터를 기반으로하는 div : divator가 있는데이 div에 정보를 넣습니다. 그런 다음 Jquery의 UI 대화 상자를 사용하여 버튼 클릭을 통해 사용자에게 데이터를 표시합니다. 이 모든 것은 순조롭게 진행됩니다.UpdatePanel에서 Jquery UI 대화 상자에 이상한 일이 발생했습니다

그래서 리피터를 채우는 데이터에 레코드를 추가 할 수 있기를 원합니다. 사람들이이 데이터를 입력 할 수있는 화면의 다른 부분을 가지고 있으며, 아약스 호출을 사용하여 데이터베이스에 저장됩니다. 이것도 역시 순조롭게 진행됩니다.

그런 다음 서버에 대한 전체 포스트 백을 수행 할 필요없이 대화 상자의 데이터를 업데이트하려고합니다. 따라서, 이것은 일반적으로 매우 쉽습니다. 내 div를 UpdatePanel에 넣고 Jquery에서 __doPostBack을 시작합니다. 그런 다음 데이터를 새로 고칩니다.이 데이터도 한 지점까지 원활하게 작동합니다.

__doPostBack이 완료되면 div가 더 이상 숨겨지지 않습니다. 이제 내 페이지에 업데이트 된 데이터가 표시되어 있지만 대화 상자를 표시하는 데 사용하는 자바 스크립트가 더 이상 작동하지 않습니다.

페이지의 초기로드에
  1. 는 사업부에서 대화 상자를 만들 jQuery를 알려주는 자바 스크립트가 양식에있는 곳에서 사업부를 소요하고에 추가합니다 :

    일부 조사는 것을 보여준다 본문 요소.

  2. 업데이트 패널이 다시 게시되면 div가 다시 작성되지만 대화 상자로 전환하는 자바 스크립트는 다시 실행되지 않습니다. (이해할 수있는 ... 페이지의 전체로드를 수행하지는 않았지만, 그래서 자바 스크립트 나던 다시 실행
  3. 이 사업부는 '대화'하지만 내 페이지에서 간단한 DIV 내가 원하는 바가 아니다, 더 이상임을 의미

을 그래서, 내 질문이 있습니다.. :

javascript aftr을 삽입하여 다시 대화 상자를 제대로 실행하고 다시 생성하는 updatepanels 포스트 백이 있습니까?

+0

__doPostBack (또는 updatepanels)에서 사용자 지정 함수를 다시 호출 할 수 없으면 어떻게 할 수 있는지 알 수 없습니다. –

+0

우리는 이것을하는 코드를 볼 수 있습니까? –

+1

나는 이것을 해결했다. updatePanel을 사용하여 그리드 내용을 새로 고치는 대신, HTML을 ajax 호출을 통해 반환하고 삽입이 완료된 후 div의 innerhtml을 설정합니다. 제대로 작동하고 업데이트 패널이 필요하지 않습니다. – tardomatic

답변

1

해결책은 UpdatePanel을 전혀 사용하지 않고 jquery ajax 호출을 통해받은 데이터로 div의 innerHTML을 변경하는 것입니다.

+0

감사합니다. 제 의견에서 볼 수 있듯이 이것은 제가 끝내 준 것입니다. – tardomatic

1

다른 해결책이 있습니다. 나는 다이얼로그 초기화 자바 스크립트를 $(function() { }); 블록 대신에 SetupDialog 라 불리는 별도의 함수에 넣었다. 그 때마다 업데이트 패널 업데이트 실행되도록

그런 다음 스크립트를 등록하여 Page_Load에 ScriptManager.RegisterStartupScript을 사용하십시오 UpdatePanel이 업데이트 된 후

ScriptManager.RegisterStartupScript(this, GetType(), "SetupDialog", "SetupDialog();", true); 

이 경우를 대화에만 작동합니다. 그 전에 대화 상자가 필요하면 $(function() { }); 블록 안에있는 SetupDialog를 호출 할 수 있습니다.

관련 문제