【问题标题】:ASP.NET Button Click Event Issue (postback)ASP.NET 按钮单击事件问题(回发)
【发布时间】:2013-03-11 20:03:39
【问题描述】:

我遇到的问题是,通过单击按钮 1 应保存在文本框中输入的数据(请参阅代码),但是当页面回发时,数据未保存(不显示确认消息)然后如果我单击它确实会再次保存记录,有时需要 3 次以上才能存储每条确认消息的数据。

这是一个 Con.Dispose 问题吗???我应该使用 con.close 吗?
注意:在代码中我有 Con.CLOSE 但是页面部署在 Con.Dispose()
注意2:我计划修复代码中发现的更多“新手”问题,但回发问题中仍然存在紧迫问题。

    ' *--------Empty Text Validation-------*
    If TextBox10_AddData_LabInvest.Text <> "" AndAlso TextBox3_AddData_LabInvest.Text <> "" AndAlso TextBox4_AddData_LabInvest.Text <> "" AndAlso TextBox5_AddData_LabInvest.Text <> "" AndAlso TextBox6_AddData_LabInvest.Text <> "" AndAlso TextBox7_AddData_LabInvest.Text <> "" Then

        ' *--------SQL Insert command-------*
        SqlDataSource_AddData_LabInvest.InsertCommand = "INSERT INTO [LabInvest] (ID_LabInvest, LabInvest_Load, LabInvest_SeqRef_CH, LabInvest_SeqRef_Year, LabInvest_Owner, LabInvest_Subject, LabInvest_DueDate, LabInvest_Code, LabInvest_QSNCCode, LabInvest_OpenByOwner, LabInvest_OpenDateOwner, Status_Text, Status_Int ) VALUES(@ID_LabInvest, @LabInvest_Load, @LabInvest_SeqRef_CH, @LabInvest_SeqRef_Year, @LabInvest_Owner, @LabInvest_Subject, @LabInvest_DueDate, @LabInvest_Code, @LabInvest_QSNCCode, @LabInvest_OpenByOwner, @LabInvest_OpenDateOwner, @Status_Text, @Status_Int)"
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("ID_LabInvest", TextBox10_AddData_LabInvest.Text)
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("LabInvest_Load", "N/A")
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("LabInvest_SeqRef_CH", TextBox1_AddData_LabInvest.Text)
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("LabInvest_SeqRef_Year", TextBox2_AddData_LabInvest.Text)
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("LabInvest_Owner", TextBox3_AddData_LabInvest.Text)
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("LabInvest_Subject", TextBox4_AddData_LabInvest.Text)
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("LabInvest_DueDate", TextBox5_AddData_LabInvest.Text)
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("LabInvest_Code", TextBox6_AddData_LabInvest.Text)
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("LabInvest_QSNCCode", TextBox7_AddData_LabInvest.Text)
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("LabInvest_OpenByOwner", TextBox8_AddData_LabInvest.Text)
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("LabInvest_OpenDateOwner", TextBox9_AddData_LabInvest.Text)
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("Status_Text", "Stage 1 - Just Added")
        SqlDataSource_AddData_LabInvest.InsertParameters.Add("Status_Int", "1")


        Try
            SqlDataSource_AddData_LabInvest.Insert()

            ' *--------Get Unique ID-------*
            Dim Con As New SqlConnection
            Dim SQL As String
            Dim com As SqlCommand = Con.CreateCommand
            Con.ConnectionString = "removed"
            Con.Open()
            SQL = "SELECT ID_LabInvest FROM LabInvest WHERE ID_LabInvest=" + TextBox10_AddData_LabInvest.Text
            Dim cmd As New SqlCommand(SQL, Con)
            Dim obj = cmd.ExecuteScalar()
            Label1_AddData_LabInvest.Text = "Your record ID is: " + obj.ToString()


            ' *--------Get Stage-------*
            Dim SQL2 As String
            SQL2 = "SELECT Status_Text from LabInvest WHERE ID_LabInvest=" & obj
            Dim cmd2 As New SqlCommand(SQL2, Con)
            Dim obj2 = cmd2.ExecuteScalar()
            Label2_AddData_LabInvest.Text = "Record Stage: " + obj2.ToString()
            con.close()
            Button4_AddData_LabInvest.Enabled = False

            ' *--------SQL Audit Insert command-------*
            Dim Usercheck As String
            Usercheck = Request.ServerVariables("LOGON_USER")
            SqlDataSource_LabInvest_Audit.InsertCommand = "INSERT INTO [AuditTrial] (ID_Table, AuditTableName, AuditAction, AuditUser, AuditValue1Before, AuditValue2Before, AuditValue1After, AuditValue2After, AuditMasterReason, AuditMasterChange) VALUES(@ID_Table, @AuditTableName, @AuditAction,  @AuditUser, @AuditValue1Before, @AuditValue2Before, @AuditValue1After, @AuditValue2After, @AuditMasterReason, @AuditMasterChange)"
            SqlDataSource_LabInvest_Audit.InsertParameters.Add("ID_Table", obj)
            SqlDataSource_LabInvest_Audit.InsertParameters.Add("AuditTableName", "LaboratoryInvestigations_Add")
            SqlDataSource_LabInvest_Audit.InsertParameters.Add("AuditAction", "Added New Record")
            SqlDataSource_LabInvest_Audit.InsertParameters.Add("AuditUser", Usercheck)
            SqlDataSource_LabInvest_Audit.InsertParameters.Add("AuditValue1Before", "N/A")
            SqlDataSource_LabInvest_Audit.InsertParameters.Add("AuditValue2Before", "N/A")
            SqlDataSource_LabInvest_Audit.InsertParameters.Add("AuditValue1After", "N/A")
            SqlDataSource_LabInvest_Audit.InsertParameters.Add("AuditValue2After", "N/A")
            SqlDataSource_LabInvest_Audit.InsertParameters.Add("AuditMasterReason", "N/A")
            SqlDataSource_LabInvest_Audit.InsertParameters.Add("AuditMasterChange", "N/A")
            SqlDataSource_LabInvest_Audit.Insert()

        Catch ex As Exception
            Label1_AddData_LabInvest.Text = "Duplicate NumberID, Please Review Data"
        End Try

    Else
        Label1_AddData_LabInvest.Text = "Please Fill All Options"
    End If

【问题讨论】:

  • 你添加断点和调试代码了吗?您是否允许它在一次又一次地点击提交按钮之前完成处理?
  • 您发布的代码是相关点击事件处理程序的一部分吗?页面中是否还有其他事件处理程序?
  • @DavidW 不,这是该点击事件的全部代码。
  • @rs。我没有多次单击按钮,单击一次(没有发生任何事情)等待 5 秒钟,然后再次单击(现在它确实保存了)

标签: asp.net sql vb.net postback


【解决方案1】:

发现问题是因为应用程序驻留在具有 NLB 的 Web 服务器场中,因此空白回发是由于 NBL 将用户从原始连接重定向到另一台服务器。 (不同的解决方案可能会应用链接 NO Cache、Connection Affinity 等)希望它对未来的人有所帮助。

【讨论】:

    猜你喜欢
    • 2010-10-21
    • 2011-12-02
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 2011-11-08
    • 2013-05-14
    相关资源
    最近更新 更多