3

我面临着非常奇怪的问题。我尝试了很多事情,但无法解决。这是场景。

我有GridView40 条记录。我在OnRowDataBoundEvent of中注册一个脚本GridView。我注册使用ScriptManager.RegisterStartupScript. GridView在 an 内UpdatePanelUpdatePanel一分钟后刷新。

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

我尝试了许多 Internet 上可用的解决方案,但对我没有任何帮助。此外,当页面部分加载时,我不会再次注册脚本,因为它已经注册了。对于 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 并删除脚本标记。

4

1 回答 1

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

}
于 2013-01-09T13:47:12.337 回答