Scriptmanager不适用于部分回发仅适用于Firefox

时间:2013-01-09 13:34:53

标签: javascript asp.net ajax updatepanel scriptmanager

我面临着非常奇怪的问题。我尝试过很多东西但是无法解决它。这是场景。

我有GridView,有40条记录。我正在OnRowDataBound GridView事件中注册一个脚本。我使用ScriptManager.RegisterStartupScript注册了。 GridView位于UpdatePanel内,UpdatePanel会在一分钟后刷新。

首次加载页面时,我的脚本运行正常。但在Partial PostBack之后,它停止了在Firefox上工作。它适用于Chrome,IE,Safari和Opera。只有Firefox才会产生问题。

我在互联网上尝试了很多解决方案,但对我来说没什么用。此外,当页面部分加载时,我没有再次注册脚本,因为它已经注册。对于Firefox,我尝试过在部分回发上注册脚本,但没有运气。这就是我注册的方式:

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);
                //
}

我尝试过将RegisterStartupScript的最后一个参数更改为True并删除脚本标记。

1 个答案:

答案 0 :(得分:0)

删除IsInAsyncPostBack检查,同时使您的脚本名称更加独特。我也倾向于使用RegisterScriptBlock,这是一个偏好:

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);

}