еще раз.Как удалить определенную строку записей в gridview?
На 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 [email protected] 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
Когда я запускаю отладчик на этом суб, он пытается удалить любую строку с первым eventid.
Например, предположим, что в таблице событий есть 5 строк записей, а идентификаторы событий - 1,2,3,4,5. Они составлены для краткости.
Если я пытаюсь удалить первую запись с EVENTID 1, я получаю:
удалить из tblEvents где EVENTID = 1
При попытке удалить строку с EVENTID 5, я все еще получаю:
Удалить из tblEvents где EVENTID = 1
Как решить эту проблему в таким образом, что каждая строка будет удален его RowId?
Заранее спасибо.
Не могли бы вы опубликовать код '' ehide' внутри осины: TemplateField' и удалить 'жереха. net-mvc', потому что вопрос не является 'mvc'. – Win
@win, извините, mvc был ошибкой. Я хотел выбрать asp.net. Спасибо за исправление. Кроме того, очень жаль, я отправил неправильный код. Теперь я разместил правильный код. BTW: eventid является целым числом, если это помогает. THANKS – Kenny
Почему вы перенаправляетесь на страницу в середине цикла? – fnostro