0

ScriptManager.RegisterStartupScript を使用すると、この奇妙な問題が発生します。基本的に、ボタン コントロールをクリックしたときに達成しようとしているのは、サーバーに戻り、エラーがないかどうかを確認することです。エラーが発生した場合は、ポップアップ ボックスを使用する必要があります。ボタン コントロールは更新パネル内にあります。これを実現する最も簡単な方法は、javascript アラート ボックスを使用することだと思いました。それで、ようやく機能するようになりましたが、アラートボックスが表示されると、アラートボックスが表示されるまでメニューコントロールがめちゃくちゃになります。説明するのがちょっと難しいので、ボタンをクリックすると何が起こるかを示す画像を挿入しました。誰かが私を正しい方向に向けることができれば、修正方法や何が起こっているのかわかりません。また、彼は私のコードを使用しています。ここに画像の説明を入力

 Protected Sub btnPlan_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnPlan.Click

 'Dim sb As New System.Text.StringBuilder
  sb.Append("<script language='javascript'>")
  sb.Append("alert(' No data in the database  ');")
  sb.Append("</script>")

    If (Not ClientScript.IsStartupScriptRegistered("JSScript")) Then
        ScriptManager.RegisterStartupScript(UpdatePanel5, Me.GetType(), "JSScript", sb.toString(), True)
    End If
4

2 に答える 2

1

RegisterClientScriptBlock を使用してみてください:

Protected Overrides Sub Page_Load(ByVal sender as Object, ByVal e As System.EventArgs)
     MyBase.Page_Load(sender, e)

     Try
         If Not ScriptManager.IsInAsyncPostBack Then
              Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "AlertScript", "<script type='text/javascript' language='javascript'>function YourAlert(){alert(' No data in the database  ');}</script>")
         EndIf
     Catch ex As Exception
     End Try
End Sub
于 2013-01-14T23:16:57.073 に答える
0

ご提案いただきありがとうございます。これを別の方法でスキニングし、思い通りに動作するようにしました。私がしたことは、メッセージを非表示のテキストボックスに入れ、jquery を使用してページが既に読み込まれていることを確認し、必要に応じてメッセージを警告することでした。

于 2013-01-18T16:45:17.837 に答える