【问题标题】:ASP.net VB DetailsView insert : javascript Postback on Cancel issueASP.net VB DetailsView 插入:javascript Postback on Cancel 问题
【发布时间】:2012-07-02 16:07:40
【问题描述】:

在我的 ASP.net 应用程序中,在 Detailsview 上使用 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>

【问题讨论】:

  • 当用户点击取消时返回 false 以防止回发
  • 不知道该怎么做。能举个例子吗?
  • Dim script As String = "" Page.ClientScript.RegisterStartupScript(Me.[GetType](), "script", script) **
  • 你不能每次都返回 false。 TheGeekYouNeed 的答案应该有效。
  • 好吧,它不起作用。 :) 这也不起作用: 'Dim script As String = "" 'Page.ClientScript.RegisterStartupScript(Me.[GetType](), "script", script)

标签: javascript asp.net insert detailsview


【解决方案1】:

将此脚本放在您的 aspx 页面的头部。

<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。

【讨论】:

  • Asdfg,我尝试了您的解决方案。我没有收到任何错误并且弹出窗口出现,但单击取消时该值再次发布到数据库中。更新了上面的代码。
  • btnDoSomethingOnOK 指的是什么?既然这是一个 DeailsView 表单,它会是插入按钮吗?
  • 如果用户单击“确定”,您可能想要执行的虚拟按钮
【解决方案2】:

在您的 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>"

【讨论】:

  • 返回答案无效。现在弹出窗口根本没有出现,调试器错误是“return statement outside function”
  • While SQLdr.Read() TextBox8.Text = SQLdr("Remaining") ' Dim script As String = "" Page.ClientScript.RegisterStartupScript(Me.[GetType](), "script", script) End While
  • 声明是脚本的一部分...我需要在别处声明吗?
  • TheGeekYouNeed ,感谢您的回复。我编辑它是因为我收到“函数外的返回语句”错误。我再次使用了您编辑的版本,但仍然出现该错误。
猜你喜欢
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 2019-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多