업데이트 패널을 새로 고친 후 일부 자바 스크립트를 어떻게 실행할 수 있습니까?
변경할 수없는 .ascx 컨트롤에 일부 CSS를 설정하는 pageLoad 함수가 있습니다. 페이지로드시 모든 것이 정상이지만 업데이트 패널이 컨트롤을 업데이트하면 내 CSS가 더 이상 적용되지 않습니다. 페이지 업데이트 후 내 기능을 다시 실행하려면 어떻게해야합니까?
$(function() {
$("textarea").attr("cols", "30");
$("input.tbMarker").css({ "width": "100px" }).attr("cols","25");
});
이것은 분명히 초기 페이지로드에서만 실행됩니다. 업데이트 후 어떻게 실행할 수 있습니까?
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/
가장 간단한 방법은 자바 스크립트 코드에서 MSAjax pageLoad 이벤트를 사용하는 것입니다.
<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 함수 (페이지 DOM (문서 개체 모델)가 JavaScript 코드를 실행할 준비가 된 후 한 번만 실행 됨)와 혼동하지 마십시오. 그러나 pageLoad 이벤트는 업데이트 패널이 실행될 때마다 실행됩니다. 새로 고침.
출처 : 업데이트 패널 AJAX asp.net 후 스크립트 실행
업데이트 패널에 대한 포스트 백 중에 서버 코드에서 ClientScriptManager를 사용하여 다음과 같은 새 스크립트를 페이지에 추가합니다.
ClientScriptManager.RegisterStartupScript(
typeof(page1),
"CssFix",
"javascriptFunctionName()",
true);
세 번째 인수와 일치하는 명명 된 함수로 자바 스크립트를 캡슐화하고 포스트 백이 반환 될 때 실행되어야합니다.
Script Manager를 배치 한 것과 동일한 형식으로 코드를 추가합니다.
비하인드 코드 :
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);
}
}
UpdatePanel이 다음과 같이 완료 될 때마다 클라이언트 측 코드 (JavaScript)의 이벤트에 바인딩 할 수도 있습니다.
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(){myFunction();});
So in this case myFunction(); will be called every time an UpdatePanel postback has occurred. If you execute this code when the page is loaded the function will be called on the correct time.
ReferenceURL : https://stackoverflow.com/questions/1190549/how-can-i-run-some-javascript-after-an-update-panel-refreshes
'IT TIP' 카테고리의 다른 글
Facebook Graph API GET 요청- "fields"매개 변수를 포함해야합니다 (Swift, Facebook SDK v4.5.1). (0) | 2020.12.26 |
---|---|
오류 : npm ERR! (0) | 2020.12.26 |
한 텍스트에서 다른 텍스트로 jQuery 텍스트 페이드 / 전환? (0) | 2020.12.26 |
.htaccess 모두에서 거부 (0) | 2020.12.26 |
배열의 모든 내용을 C #으로 인쇄 (0) | 2020.12.26 |