2013-01-09 2 views
3

매우 이상한 문제가 있습니다. 나는 많은 것을 시도했지만 해결할 수 없었다. 다음은 시나리오입니다.Scriptmanager 부분적인 포스트 백에서 작동하지 않습니다. Firefox에서만

나는 40 레코드가있는 GridView입니다. OnRowDataBound 이벤트에 GridView이라는 스크립트를 등록합니다. ScriptManager.RegisterStartupScript을 사용하여 등록했습니다. GridViewUpdatePanel 안에 있고 1 분 후에는 UpdatePanel이 새로 고쳐집니다.

처음 페이지를로드 할 때 스크립트가 정상적으로 작동합니다. 그러나 Partial PostBack 후에는 Firefox에서 작동하지 않습니다. Chrome, IE, Safari 및 Opera에서 작업 중입니다. 문제를 일으키는 것은 Firefox뿐입니다.

나는 인터넷에서 사용할 수있는 많은 솔루션을 시도했지만 나에게 도움이되지 못했습니다. 또한 페이지가 부분적으로로드되면 스크립트가 이미 등록되어 있으므로 다시 등록하지 않습니다. Firefox의 경우 부분 포스트 백에 스크립트를 등록하여 시도했지만 행운은 없습니다. 내가 참으로 RegisterStartupScript의 마지막 인수를 변경하고 스크립트 태그를 제거하여 시도

ScriptManager scriptManager = ScriptManager.GetCurrent(this); 
if (scriptManager != null && !scriptManager.IsInAsyncPostBack) 
{ 
        ScriptManager.RegisterStartupScript(this.UpdatePanel5, this.UpdatePanel5.GetType(), e.Row.RowIndex.ToString(), "<script language='javascript' type='text/javascript'>alert('Error Message');</script>", false); 
       // 
} 

: 이것은 내가 등록하고 방법이다.

답변

0

IsInAsyncPostBack 체크를 제거하고 스크립트 이름을 더 고유하게 만드십시오. 내가 IsInAsyncPostBack을 제거하면

ScriptManager scriptManager = ScriptManager.GetCurrent(this); 
if (scriptManager != null) 
{ 
     ScriptManager.RegisterScriptBlock(this.UpdatePanel5 + DateTime.Now.Ticks.ToString(), this.UpdatePanel5.GetType(), e.Row.RowIndex.ToString(), "<script language='javascript' type='text/javascript'>alert('Error Message');</script>", false); 

} 
+0

그것은 같은 목적을 위해 중복 된 스크립트를 추가 할 것입니다 : 내가 대신 RegisterScriptBlock를 사용하는 경향, 즉 선호합니다. 그것은 브라우저를 혼란스럽게 할 것입니다. 나는 또한 scriptname = guid와 RegisterScriptBlock을 시도했다. 아무것도 효과가 없습니다. –

관련 문제