programing

특정 UpdatePanel이 로드된 후 클라이언트 측 javascript 함수를 호출하는 방법

bestprogram 2023. 3. 8. 21:53

특정 UpdatePanel이 로드된 후 클라이언트 측 javascript 함수를 호출하는 방법

특정 업데이트 패널이 로드된 후 클라이언트 측 javascript 메서드를 호출하려면 어떻게 해야 합니까?

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler) 업데이트 패널 로드 완료 후 부팅되며 클라이언트 측에서 어떤 패널인지 찾을 수 없기 때문에 작동하지 않습니다.

ScriptManager.GetCurrent(Page).AsyncPostBackSourceElementID AsyncPostBackSourceElementID 이것은 서버측 오브젝트이기 때문에, 클라이언트측을 원하기 때문에, 기능하지 않습니다.

ClientSide.올바른 콘텐츠를 업데이트하려면 Net Framework가 업데이트 중인 UpdatePanel을 알아야 합니다.확실히 이 이벤트에 참여할 수 있는 방법이 있을까요?

어떤 도움이라도 주시면 감사하겠습니다.

감사합니다. 둘 다 좋은 답변입니다.저는 결국 클라이언트 측 스크립트 "page loaded"로 진행했습니다.그것은 구글이 나에게 밝히지 않은 꽤 숨겨진 방법이다.이 코드는 FireBug와 연계하여 업데이트된 패널을 찾기 위한 PageLoaded 메서드의 데모를 제공합니다.

<script type="text/javascript">
        $(document).ready(function() {
            panelsLoaded = 1;
            Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoaded)
        });

        function PageLoaded(sender, args) {
            console.log("I have occured " + panelsLoaded++ + " times!");

            var panelsCreated = args.get_panelsCreated();
            for (var i = 0; i < panelsCreated.length; i++) {
                console.log("Panels Updating: " + panelsCreated[i].id);
            }

            var panelsUpdated = args.get_panelsUpdated();
            for (var i = 0; i < panelsUpdated.length; i++) {
                console.log("Panels Updating: " + panelsUpdated[i].id);
            }
        }
    </script>

PageRequestManager를 후크할 수 있습니다.beginRequest 이벤트 및 BeginRequestEventArgs.postBackElement 속성을 검사합니다.

실제로는 UpdatePanel이 아니라 UpdatePanel 내부의 컨트롤이 제공됩니다.그래도 충분할 거야

편집: PageRequestManager.pageLoaded 이벤트는 PageLoadedEventArgs.panelsUpdated( panelsCreated) 속성을 제공합니다.

이것이 해결책일 수 있습니다.

UpdatePanel의 OnLoad 이벤트 뒤에 있는 코드에서 시작 스크립트를 등록합니다.

string scriptText = "alert('Bar!');";

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "foo", scriptText, true);

언급URL : https://stackoverflow.com/questions/338702/how-to-call-a-client-side-javascript-function-after-a-specific-updatepanel-has-b