3

私は非常に奇妙な問題に直面しています。私は多くのことを試しましたが、解決できませんでした。これがシナリオです。

私はGridView40件のレコードを持っています。OnRowDataBoundのイベントにスクリプトを登録していますGridView。を使って登録しScriptManager.RegisterStartupScriptました。GridViewの中にあり、UpdatePanel1UpdatePanel分後に更新されます。

初めてページがロードされたとき、私のスクリプトは正常に動作します。しかし、部分ポストバックの後、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 に変更し、script タグを削除してみました。

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 に答える