また。
gridview マークアップには、次のものがあります。
<asp:TemplateField HeaderText="Dates">
<ItemTemplate>
<asp:Label ID="dates_label runat="server" Text='<%# Bind("shipDates","{0:M/dd/yyyy}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField ID="ehide" Value='<%# Eval("eventId") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
グリッドビューには複数行のレコードが表示され、非表示のフォーム フィールドを使用して、行をイベント テーブルの特定のイベント ID に関連付けることができます。
以下は、レコードの各行を削除しようとする分離コードです。
For Each row As GridViewRow In GridView1.Rows
Dim dates_label = DirectCast(row.FindControl("dates_label"), Label)
Dim shipDates = Date.ParseExact(dates_label.Value, "M/dd/yyyy", Nothing)
Dim ehide = DirectCast(row.FindControl("ehide"), HiddenField)
Dim eventid = ehide.Value
Dim myConnectionString As [String] = ConfigurationManager.ConnectionStrings("DBConnectionString").ConnectionString
Dim myConnection As New SqlConnection(myConnectionString)
Try
myConnection.Open()
strSQL = "Delete from tblEvents where username=@UserName and eventid = @eventid"
com = New SqlCommand(strSQL, myConnection)
com.Parameters.AddWithValue("@username", Session("username"))
com.Parameters.AddWithValue("@eventid", eventid)
Response.Write(strSQL)
Response.End()
com.ExecuteNonQuery()
myConnection.Close()
Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Information Saved successfully')</SCRIPT>")
Response.Redirect("~/default.aspx")
Catch ex As SqlException
Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('" + ex.Message + "')</SCRIPT>")
Finally
myConnection.Close()
End Try
Next
このサブシステムでデバッガーを実行すると、最初のイベント ID を持つ行を削除しようとします。
たとえば、イベント テーブルに 5 行のレコードがあり、イベント ID が 1、2、3、4、5 であるとします。これらは、簡潔にするために作成された数字です。
eventId 1 の最初のレコードを削除しようとすると、次のようになります。
eventId = 1 の tblEvents から削除
eventId 5 の行を削除しようとすると、次のようになります。
eventId = 1 の tblEvents から削除
各行がそのrowIdによって削除されるようにこれを解決するにはどうすればよいですか?
前もって感謝します。