1
這讓我在上週瘋狂。我已經閱讀了許多有關這個問題的問題和答案,但仍然無法解決我的問題。我已經檢查了所有可能的事件觸發,並找不到任何。重複插入ASP.NET
我kondisi.aspx
:
<!-- some header here -->
<form id="form1" runat="server" class="form-horizontal">
<div class="box-body">
<div class="form-group">
<label class="col-sm-2 control-label text-right">Kondisi :</label>
<div class="col-sm-10">
<asp:textbox id="tbkondisi" runat="server" cssclass="form-control" textmode="MultiLine"></asp:textbox>
</div>
</div>
<asp:label id="lInfo" runat="server" cssclass="error" visible="False"></asp:label>
<asp:label id="linfoberhasil" runat="server" cssclass="berhasil" visible="False"></asp:label>
<div class="box-footer text-center">
<dxe:aspxbutton id="btSimpan" runat="server" text="Simpan" cssclass="btn btn-primary" enabledefaultappearance="False"></dxe:aspxbutton>
<dxe:aspxbutton id="btBatal" runat="server" text="Reset" cssclass="btn btn-danger" enabledefaultappearance="False"></dxe:aspxbutton>
</div>
<asp:hiddenfield id="hfID" runat="server" />
<asp:hiddenfield id="hfMode" runat="server" />
<!-- some grid and footer here -->
btSimpan點擊事件,處理的按鈕:
Protected Sub btSimpan_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btSimpan.Click
Try
If Validasi() Then
If hfMode.Value = "Insert" Then
Insert()
linfoberhasil.Visible = True
linfoberhasil.Text = "Simpan Berhasil"
Else
Update(hfID.Value)
linfoberhasil.Visible = True
linfoberhasil.Text = "Update Berhasil"
End If
End If
Catch ex As Exception
Response.Write("<b>Error button simpan :</b>" & ex.ToString)
End Try
End Sub
這是檢查重複的項目驗證函數:
Private Function Validasi() As Boolean
Try
clear_label()
If hfMode.Value = "Insert" Then
If tbkondisi.Text.Trim = "" Then
lInfo.Visible = True
lInfo.Text = "Nama kondisi masih kosong"
Return False
End If
sqlstring = "SELECT ID FROM KondisiPengiriman " & _
"WHERE Nama_Kondisi = '" & tbkondisi.Text.Replace("'", "''") & "' " & _
"AND [status] = 1 "
result = SQLExecuteScalar(sqlstring)
If result <> "" Then
lInfo.Visible = True
lInfo.Text = "Nama kondisi sudah ada"
Return False
End If
End If
If hfMode.Value = "Update" Then
If tbkondisi.Text.Trim = "" Then
lInfo.Visible = True
lInfo.Text = "Nama kondisi masih kosong"
Return False
End If
End If
Return True
Catch ex As Exception
Throw New Exception("Error function Validasi : " & ex.ToString)
End Try
End Function
而且這裏clear_label()函數重置所有領域:
Private Sub clear_label()
lInfo.Visible = False
lInfo.Text = ""
linfoberhasil.Visible = False
linfoberhasil.Text = ""
End Sub
最後插入()函數:
Private Sub Insert()
Try
sqlstring = "INSERT INTO KondisiPengiriman " & _
"(Nama_Kondisi, UserName, [status]) VALUES " & _
"('" & tbkondisi.Text.Replace("'", "''") & "', '" & Session("UserId") & "', 1)"
hasil = SQLExecuteNonQuery(sqlstring)
If hasil > 0 Then
load_grid_kondisi()
clear()
End If
Catch ex As Exception
Throw New Exception("<b>Error function insert :</b> " & ex.ToString)
End Try
End Sub
似乎驗證()剛剛接觸一個時間,它插入2倍,這是同時插入了SQL跟蹤:
RPC:Completed exec sp_reset_connection .Net SqlClient Data Provider sa 0 0 0 0 15032 55 2017-06-13 10:36:28.910 2017-06-13 10:36:28.910 0X00000000000000002600730070005F00720065007300650074005F0063006F006E006E0065006300740069006F006E00 sa ts11pc TS11PC
Audit Login -- network protocol: LPC
SQL:BatchStarting SELECT ID FROM KondisiPengiriman WHERE Nama_Kondisi = 'tes' AND [status] = 1 .Net SqlClient Data Provider sa 15032 55 2017-06-13 10:36:28.910 sa ts11pc TS11PC
SQL:BatchCompleted SELECT ID FROM KondisiPengiriman WHERE Nama_Kondisi = 'tes' AND [status] = 1 .Net SqlClient Data Provider sa 0 2 0 0 15032 55 2017-06-13 10:36:28.910 2017-06-13 10:36:28.910 sa ts11pc TS11PC
Audit Logout .Net SqlClient Data Provider sa 0 1782 0 3 15032 55 2017-06-13 10:36:28.910 2017-06-13 10:36:28.913 1 - Non-DAC sa ts11pc TS11PC
RPC:Completed exec sp_reset_connection .Net SqlClient Data Provider sa 0 0 0 0 15032 55 2017-06-13 10:36:28.913 2017-06-13 10:36:28.913 0X00000000000000002600730070005F00720065007300650074005F0063006F006E006E0065006300740069006F006E00 sa ts11pc TS11PC
Audit Login -- network protocol: LPC
SQL:BatchStarting INSERT INTO KondisiPengiriman (Nama_Kondisi, UserName, [status]) VALUES ('tes', 'LIGITAADMIN', 1) .Net SqlClient Data Provider sa 15032 55 2017-06-13 10:36:28.913 sa ts11pc TS11PC
SQL:BatchCompleted INSERT INTO KondisiPengiriman (Nama_Kondisi, UserName, [status]) VALUES ('tes', 'LIGITAADMIN', 1) .Net SqlClient Data Provider sa 0 4 0 0 15032 55 2017-06-13 10:36:28.913 2017-06-13 10:36:28.913 sa ts11pc TS11PC
Audit Logout .Net SqlClient Data Provider sa 0 1786 0 0 15032 55 2017-06-13 10:36:28.913 2017-06-13 10:36:28.913 1 - Non-DAC sa ts11pc TS11PC
RPC:Completed exec sp_reset_connection .Net SqlClient Data Provider sa 0 0 0 0 15032 55 2017-06-13 10:36:28.913 2017-06-13 10:36:28.913 0X00000000000000002600730070005F00720065007300650074005F0063006F006E006E0065006300740069006F006E00 sa ts11pc TS11PC
Audit Login -- network protocol: LPC
SQL:BatchStarting INSERT INTO KondisiPengiriman (Nama_Kondisi, UserName, [status]) VALUES ('tes', 'LIGITAADMIN', 1) .Net SqlClient Data Provider sa 15032 55 2017-06-13 10:36:28.913 sa ts11pc TS11PC
SQL:BatchCompleted INSERT INTO KondisiPengiriman (Nama_Kondisi, UserName, [status]) VALUES ('tes', 'LIGITAADMIN', 1) .Net SqlClient Data Provider sa 0 4 0 0 15032 55 2017-06-13 10:36:28.913 2017-06-13 10:36:28.913 sa ts11pc TS11PC
Audit Logout .Net SqlClient Data Provider sa 0 1790 0 3 15032 55 2017-06-13 10:36:28.917 2017-06-13 10:36:28.920 1 - Non-DAC sa ts11pc TS11PC
RPC:Completed exec sp_reset_connection .Net SqlClient Data Provider sa 15 0 0 0 15032 55 2017-06-13 10:36:28.920 2017-06-13 10:36:28.920 0X00000000000000002600730070005F00720065007300650074005F0063006F006E006E0065006300740069006F006E00 sa ts11pc TS11PC
Audit Login -- network protocol: LPC
SQL:BatchStarting SELECT ID, Nama_Kondisi from KondisiPengiriman where [status] = 1 .Net SqlClient Data Provider sa 15032 55 2017-06-13 10:36:28.920 sa ts11pc TS11PC
SQL:BatchCompleted SELECT ID, Nama_Kondisi from KondisiPengiriman where [status] = 1 .Net SqlClient Data Provider sa 0 2 0 0 15032 55 2017-06-13 10:36:28.920 2017-06-13 10:36:28.920 sa ts11pc TS11PC
Audit Logout .Net SqlClient Data Provider sa 0 1792 0 354220 15032 55 2017-06-13 10:36:28.920 2017-06-13 10:42:23.140 1 - Non-DAC sa ts11pc TS11PC
我想不出什麼原因引起的這一點,似乎函數只是運行1次,但插入指令的2倍。幫助和指導來解決這個真正appreaciated。非常感謝你。
在visual studio中附加調試器,設置斷點,查看調用堆棧以查看導致雙觸發的原因。 – Steve
在另一個說明中,使用'SqlParameters' .... – Codexer
@steve:它說'這是不是有效的斷點位置',當我嘗試在insert()函數中設置時,但我已經試過在insert給我重複的插入。 –