ASP.net VB 详细信息视图插入:取消问题的 javascript 回发

ASP.net VB DetailsView insert : javascript Postback on Cancel issue

本文关键字:问题 取消 javascript 回发 插入 net VB 详细信息 视图 ASP      更新时间:2023-09-26

在我的 ASP.net 应用程序中,在详细信息视图上使用ItemInserting,我正在使用 javascript 函数向用户显示一个确认框。确认框基本上显示来自数据库的查询结果。

它工作正常,除了即使用户单击"取消"也会发生回发。

确定我在这里缺少一些基本的东西,专家可以帮忙吗?感谢您的回复。我确实在整个网站上进行了搜索,但大多数解决方案都在按钮上使用onClick事件。我不确定如何在这里做到这一点。

更新:根据TheGeekYouNeed的建议,我尝试在我的脚本中加入一个条件。现在弹出窗口不再出现。任何人?

 Protected Sub CustomerDetail_ItemInserting(sender As Object, e As System.Web.UI.WebControls.DetailsViewInsertEventArgs)
    Dim args As String = e.Values("WriteID").ToString()
    For Each drv As Data.DataRowView In SqlDataSource3.[Select](DataSourceSelectArguments.Empty)
        If drv("WriteID") = args Then

            Dim ConnString As String = "Data Source=75409CHQ4034'SQLEXPRESS;Initial Catalog=ExpenseTracker;Integrated Security=True"
            Dim SQLConn As New SqlConnection()
            Dim SQLCmd As New SqlCommand()
            Dim SQLdr As SqlDataReader
            SQLConn.ConnectionString = ConnString 'Set the Connection String
            SQLConn.Open() 'Open the connection
            SQLCmd.Connection = SQLConn 'Sets the Connection to use with the SQL Command
            SQLCmd.CommandText = "Select  Top 1 Budget - Difference as 'Remaining' FROM ExpenseImageAudit where WriteID =" + "'" + args + "' Group by ID, Budget-Difference order by ID desc "
            'Sets the SQL String
            SQLdr = SQLCmd.ExecuteReader 'Gets Data
            While SQLdr.Read() 'While Data is Present
                TextBox8.Text = SQLdr("Remaining")
                Dim script As String = String.Format("<script type='text/javascript'>confirmBudget({0});</script>", TextBox8.Text)
                Page.ClientScript.RegisterStartupScript(Me.[GetType](), "script", script)
            End While
        SQLdr.Close() 'Close the SQLDataReader
        SQLConn.Close() 'Close the connection
        End If
    Next
End Sub

脚本:

    <script type="text/javascript">
    function confirmBudget(amount) {
        return confirm('Based on your last transaction, your amount left is' + amount + '. Do you want to proceed?');
    }        
</script>

将此脚本放在 aspx 页的 head 部分中。

<script type="text/javascript">
   function confirmBudget(amount)
   {
      if(confirm('Based on your last transaction, your amount left is' + amount + '. Do you want to proceed?'))
      {
         document.getElementById("btnDoSomethingOnOK").click();
      }
   }
</script>

从服务器端代码中调用它:

string script = string.Format("<script type='text/javascript'>confirmBudget({0});</script>", TextBox8.Text);
Page.ClientScript.RegisterStartupScript(this.GetType(), "script", script);

很抱歉 C# 语法。我不知道 vb。

在你的 Javascript 中,返回答案。

Dim script As String = "<script language='javascript'>var a=' " + TextBox8.Text & "'; var answer = confirm('Based on your last transaction, your amount left is '+ a + '. Do you want to proceed?'); return answer; </script>"