2013-03-11 35 views
0

我遇到的問題是,點擊按鈕1時應保存輸入到文本框中的數據(請參閱代碼),但是當頁面回發時數據不會保存(沒有確認消息出現),那麼如果我再次點擊它確實保存了記錄,有時需要超過3次,直到數據按確認消息存儲。ASP.NET按鈕單擊事件問題(回發)

這是一個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 
+0

您是否添加了斷點和調試代碼?你是否允許它一次又一次地點擊提交按鈕來完成處理? – 2013-03-11 20:07:34

+0

您發佈的代碼是相關的點擊事件處理程序的一部分嗎?頁面中是否有其他事件處理程序? – 2013-03-11 20:08:48

+0

@DavidW沒有那個點擊事件的整個代碼。 – 2013-03-11 20:10:31

回答

0

問題被發現的應用程序是駐留在Web服務器農場與NLB,因此空白後回是由於NBL將用戶重定向到從原來連接另一臺服務器。 (不同的解決方案可能會應用鏈接NO緩存,連接親和度等)希望它可以幫助未來的人。