업데이트 패널을 새로 고친 후 자바스크립트를 실행하려면 어떻게 해야 합니까?
.ascx 컨트롤에서 변경할 수 없는 CSS를 설정하는 pageLoad 함수가 있습니다.페이지 로드에서는 모든 것이 괜찮지만 업데이트 패널이 컨트롤을 업데이트하면 내 CSS가 더 이상 적용되지 않습니다.페이지 업데이트 후 기능을 다시 실행하려면 어떻게 해야 합니까?
$(function() {
$("textarea").attr("cols", "30");
$("input.tbMarker").css({ "width": "100px" }).attr("cols","25");
});
이것은 분명히 초기 페이지 로드에서만 실행됩니다.업데이트 후에는 어떻게 실행할 수 있습니까?
가장 간단한 방법은 Javascript 코드에서 MSAjax pageLoadEvent를 사용하는 것입니다.
<script>
///<summary>
/// This will fire on initial page load,
/// and all subsequent partial page updates made
/// by any update panel on the page
///</summary>
function pageLoad(){ alert('page loaded!') }
</script>
제가 여러 번 사용해봤는데, 매력적으로 작동합니다.가장 중요한 것은 document.ready 함수와 혼동하지 않는 것입니다. 이 함수는 페이지 Document Object Model(DOM)이 JavaScript 코드를 실행할 준비가 된 후 한 번만 실행됩니다. 그러나 pageLoad Event는 업데이트 패널이 새로 고쳐질 때마다 실행됩니다.
출처: 업데이트 패널 AJAX asp.net 이후 스크립트 실행 중
add_pageLoaded 핸들러를 추가하는 것도 가능합니다.
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoadedHandler);
참고: 모든 콜백에 대해 처리기가 실행되지만 사용할 수 있습니다.sender._postBackSettings.panelID사용자 함수를 호출할 때 필터링합니다.
추가 샘플:
- http://blog.jeromeparadis.com/2007/03/01/1501/
- http://zeemalik.wordpress.com/2007/11/27/how-to-call-client-side-javascript-function-after-an-updatepanel-asychronous-ajax-request-is-over/
스크립트 관리자를 배치한 것과 동일한 양식으로 코드를 추가합니다.
코드 이면:
protected void Page_Load(object sender, EventArgs e)
{
if (ScriptManager1.IsInAsyncPostBack)
{
StringBuilder sb = new StringBuilder();
sb.Append("<script language='javascript' type='text/javascript'>");
sb.Append("Sys.Application.add_load(func);");
sb.Append("function func() {");
sb.Append("Sys.Application.remove_load(func);");
sb.Append("alert('I am Batman!');");
sb.Append("}");
sb.Append("</script>");
ScriptManager.RegisterStartupScript(this, GetType(), "script", sb.ToString(), false);
}
}
업데이트 패널에 대한 포스트백 중 서버 코드에서 클라이언트 스크립트 관리자를 사용하여 페이지에 다음과 같은 새 스크립트를 추가합니다.
ClientScriptManager.RegisterStartupScript(
typeof(page1),
"CssFix",
"javascriptFunctionName()",
true);
세 번째 인수와 일치하는 명명된 함수로 Javascript를 캡슐화하고 포스트백이 반환될 때 실행해야 합니다.
또한 UpdatePanel이 다음과 같이 완료될 때마다 클라이언트 사이드 코드(JavaScript)의 이벤트에 바인딩할 수 있습니다.
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(){myFunction();});
따라서 이 경우 업데이트 패널 포스트백이 발생할 때마다 myFunction();이(가) 호출됩니다.페이지가 로드될 때 이 코드를 실행하면 올바른 시간에 기능이 호출됩니다.
언급URL : https://stackoverflow.com/questions/1190549/how-can-i-run-some-javascript-after-an-update-panel-refreshes
'programing' 카테고리의 다른 글
| c/c++ 컴파일러는 2의 거듭제곱 값에 의한 상수 분할을 시프트로 최적화합니까? (0) | 2023.06.30 |
|---|---|
| 일치하는 호스트 키 유형을 찾을 수 없습니다.그들의 제안: ssh-rsa. (0) | 2023.06.30 |
| Floating 앱 출시 후 Google 로그인이 작동하지 않음 (0) | 2023.06.25 |
| 렌(제너레이터() 방법) (0) | 2023.06.25 |
| jQuery: text()와 html()의 차이점은 무엇입니까? (0) | 2023.06.25 |