fereshte22
سه شنبه 22 خرداد 1386, 17:35 عصر
سلام
من یک گریدویو دارم که در اون از چک باکس برای انتخاب سطرهای گرید و حذف انها استفاده میشود.و از کد زیر استفاده کردم
Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
Dim chkRemove As WebControls.CheckBox
Dim strIDs As String = ""
Dim boolCheck As Boolean = False
For Each 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 & ","
End If
Next
If boolCheck = True Then
Dim strSQL As String = "Delete From kala Where number IN (" & strIDs.Substring(0, strIDs.LastIndexOf(",")) & ")"
Dim Cnn As New SqlConnection("Data Source=FERESHTE-BDE62C\SQLEXPRESS;Initial Catalog=ssgshop;Integrated Security=True")
Dim Cmd As New 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 Is Nothing) Then Cmd.Dispose()
BindGridView()
End Try
End If
End Sub
حالا سوال من اینه چرا وقتی گرید ویو را به صورت زیر بایند میکنم این کد مشکلی ندارد
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
مشکل چیه؟
در ضمن من حتما میخواهم از روش دوم استفاده کنم.
من یک گریدویو دارم که در اون از چک باکس برای انتخاب سطرهای گرید و حذف انها استفاده میشود.و از کد زیر استفاده کردم
Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
Dim chkRemove As WebControls.CheckBox
Dim strIDs As String = ""
Dim boolCheck As Boolean = False
For Each 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 & ","
End If
Next
If boolCheck = True Then
Dim strSQL As String = "Delete From kala Where number IN (" & strIDs.Substring(0, strIDs.LastIndexOf(",")) & ")"
Dim Cnn As New SqlConnection("Data Source=FERESHTE-BDE62C\SQLEXPRESS;Initial Catalog=ssgshop;Integrated Security=True")
Dim Cmd As New 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 Is Nothing) Then Cmd.Dispose()
BindGridView()
End Try
End If
End Sub
حالا سوال من اینه چرا وقتی گرید ویو را به صورت زیر بایند میکنم این کد مشکلی ندارد
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
مشکل چیه؟
در ضمن من حتما میخواهم از روش دوم استفاده کنم.