문제

쉬운 일이지만 이해할 수 없습니다.

일부 UpdatePanel이있는 ASP.NET 페이지가 있습니다.UpdatePanels에 'Please wait'텍스트와 함께 페이지가 완전히 로드되기를 원합니다.그런 다음 페이지가 완전히로드 되면 코드 숨김 함수를 호출하여 UpdatePanel을 업데이트합니다.

이 아이디어를 구현하는 데 필요한 Javascript와 코드 숨김의 조합에 대한 아이디어가 있습니까?

SAL

PS : Page_Load에 함수 호출을 넣으려고했지만 페이지가 전달되기 전에 코드가 실행되고 실행하려는 함수가 시간이 걸리기 때문에 페이지가로드하기에 너무 깁니다.

도움이 되었습니까?

해결책

특정 밀리 초 후에 실행되는 타이머 컨트롤을 사용합니다 (페이지로드 용).타이머 틱 이벤트에서 업데이트 패널을 새로 고칩니다.

다른 팁

나는 ScriptManager의 제안을 꼼꼼히 살펴 보았습니다. 결국 작업하게 될 것이라고 생각하지만 Timer 아이디어는 구현하기가 더 쉬우 며 실제로는 그렇게 많은 해킹이 아닌 것 같습니다!

초기 페이지 렌더링이 완료된 패널을 업데이트 한 방법은 다음과 같습니다.

default.aspx 라코 디스

그리고 default.aspx.cs 뒤에있는 코드는 다음과 같습니다. 라코 디스

따라서 페이지가로드되고 Timer (UpdatePanel에 포함 된)가 페이지가로드 된 후 2 초 후에 실행됩니다 (타이머가 실제로 언제 시작되는지 확실하지 않습니까?).레이블 텍스트가 다시 작성되고 더 이상 업데이트를 중지하기 위해 타이머가 비활성화됩니다.

간단하지만 순수 주의자들이 이것이 끔찍한 해킹인지 말해 줄 수 있나요?

ScriptManager.RegisterStartupScript 를 살펴보세요.

아이디어는 시작할 때 실행할 스크립트를 등록하는 것입니다 (페이지가로드되면 믿습니다).스크립트는 UpdatePanel을 통해 게시물을 다시 생성하는 함수를 호출해야합니다.

쉽게 이해할 수있는 것보다 UpdatePanels로 이와 같은 일을하는 것은 당신을 물릴 것입니다. 그것은 단지 언제 문제 일뿐입니다.

이 게시물의 첫 번째 질문에서 사용자가 찾고있는 것은 업데이트 패널이로드되는 동안 사용자에게 표시되는 메시지라고 생각합니다.UpdatePanel 컨트롤 바로 위에 페이지에 아래와 같은 UpdateProgress 컨트롤을 배치하고 UpdatePanel에서 이벤트를 트리거하고 평소와 같이 백엔드 코드를 넣으면 UpdateProgress 컨트롤에 포함 된 내용이 모두로드되는 동안 UpdatePanel이로드됩니다.콘텐츠가 백엔드에서 처리되고 있습니다. 라코 디스

수동 자바 스크립트를 복잡하게 만들 필요가 없습니다.

ScriptManager.RegisterStartupScript를 사용하면 업데이트 패널 내에서 시작시 스크립트를 실행할 수 있습니다.이전 ClientScript.RegisterStartupScript를 사용하는 경우 렌더링하는 스크립트는 udpate 패널의 경계를 벗어나므로 비동기 페이지로드 중에 실행되지 않습니다.

시작 스크립트에 Tom의 접근 방식을 사용하면 다음을 호출 할 수 있습니다. <인용구>

__ doPostBack ( 'UpdatePanelName', '');

좋아요. SAL과 나머지 분들께 감사드립니다. 이것은 제가 가진 큰 문제를 해결했습니다. 제 절차는 페이지가 최종적으로 렌더링되고 표시되는 데 최대 1 분이 소요되었습니다.

감사합니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top