سلام
من یک گریدویو دارم که در اون از چک باکس برای انتخاب سطرهای گرید و حذف انها استفاده میشود.و از کد زیر استفاده کردم
ProtectedSub GridView1_RowDeleting(ByVal sender AsObject, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
Dim chkRemove As WebControls.CheckBox
Dim strIDs AsString = ""
Dim boolCheck AsBoolean = False
ForEach gvRow As GridViewRow In GridView1.Rows
chkRemove = CType(gvRow.FindControl("ChkRemove"), WebControls.CheckBox)
If chkRemove.Checked Then
boolCheck = True
strIDs += GridView1.DataKeys(gvRow.RowIndex).Value & ","
EndIf
Next
If boolCheck = TrueThen
Dim strSQL AsString = "Delete From kala Where number IN (" & strIDs.Substring(0, strIDs.LastIndexOf(",")) & ")"
Dim Cnn AsNew SqlConnection("Data Source=FERESHTE-BDE62C\SQLEXPRESS;Initial Catalog=ssgshop;Integrated Security=True")
Dim Cmd AsNew SqlCommand(strSQL, Cnn)
Try
Cnn.Open()
Cmd.ExecuteNonQuery()
Catch ex As SqlException
Response.Write(ex.Message.ToString())
Finally
If Cnn.State <> ConnectionState.Closed Then Cnn.Close()
If (Not Cmd IsNothing) Then Cmd.Dispose()
BindGridView()
EndTry
EndIf
EndSub
حالا سوال من اینه چرا وقتی گرید ویو را به صورت زیر بایند میکنم این کد مشکلی ندارد
GridView1.DataSource = cmd.ExecuteReader
GridView1.DataBind()
ولی وقتی به صورت زیر اون را بایند میکنم
GridView1.DataSourceID = "SqlDataSource1"
خطای زیر را میدهد:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
مشکل چیه؟
در ضمن من حتما میخواهم از روش دوم استفاده کنم.