试。
在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>
gridview显示几行记录并使用隐藏的表单字段,我能够将一行与其事件表中的特定eventid相关联。
然后下面是尝试删除每一行记录的代码隐藏。
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
当我在这个sub上运行一个调试器时,它会尝试删除第一个eventid的任何行。
例如,假设事件表上有5行记录,且eventID为1,2,3,4,5。为简洁起见,这些是由数字组成的。
如果我尝试删除eventId 1的第一条记录,我会得到:
从eventId = 1
的tblEvents中删除如果我尝试删除eventId 5的行,我仍然会得到:
从eventId = 1
的tblEvents中删除如何解决此问题,使每行被其rowId删除?
提前致谢。
答案 0 :(得分:0)
基于我们讨论的假设。
(EDIT: Just rememberd this option won't be available until you place the delete command in the SqlDataSource control)
强> 如果这一切都是真的那么删除行非常简单:
在SqlDataSource属性列表中
"DELETE FROM tblEvents WHERE (username = @UserName) AND (eventid = @eventid)
Refresh Parameters
按钮全部保存
现在删除命令已“连接”到主键(eventid),删除应该正常工作