السلام عليكم ورحمة الله وبركاته
قمت بتطبيق درس الحذف في الـ ASP.NET ولكن عند التنفيذ يعطي الخطا التالي:
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
في السطر التالي:
Cmd.Parameters.Add(New SqlParameter("@UserName", DataGrid1.DataKeys(CInt(e.Item.ItemIndex))))والكود كالتالي:
Imports System.Data Imports System.Data.SqlClient Public Class WebForm4 Inherits System.Web.UI.Page Dim strConn As String = "data source = localhost; initial catalog = project; user id = sa; password = center" Dim DeleteCmd As String = "DELETE from users Where UserName = @UserName" Dim selectcmd As String = "select * from Users order by UserName desc" Dim MyConn As New SqlConnection(strConn) Dim Cmd As New SqlCommand(DeleteCmd, MyConn) Dim ds As DataSet = New DataSet Dim da As New SqlDataAdapter(selectcmd, MyConn
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Put user code to initialize the page here If Not Page.IsPostBack Then BindData() End If End Sub
Private Sub DataGrid1_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand
Cmd.Parameters.Add(New SqlParameter("@UserName", DataGrid1.DataKeys(CInt(e.Item.ItemIndex))))
MyConn.Open()
Cmd.ExecuteNonQuery()
MyConn.Close()
BindData()
End SubSub BindData() da.Fill(ds) DataGrid1.DataSource = ds.Tables(0).DefaultView DataGrid1.DataBind() End Sub End Class
وانا استخدم الـ VS.NET
و الـSQL SERVER