قرار دادن چک باکس در گریدویو و حذف سطرهای انتخاب شده

fereshte22

Member
سلام
من میخواهم در گرید ویو چک باکس قرار دهم و یک دکمه حذف که سطرهایی که با چک باکس انتخاب میشوند حذف شوند.من در یک نمونه برنامه دیدم که به صورت زیر عمل کرده بود.البته گرید ویوی من سادهتر از اون نمونه برنامه است.
طراحیه من به صورت زیر است
کد:
 <asp:TemplateField HeaderText="حذف">
                 
                        <FooterTemplate>
                            <asp:Button CommandName="Delete" Text="حذف" ID="btnRemove" runat="server" BorderStyle="Solid"
                                BorderWidth="1px" BackColor="#FFC080" Font-Names="Tahoma" Font-Size="11px" />
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="ChkRemove" runat="server"></asp:CheckBox>
                        </ItemTemplate>
                        <ItemStyle BackColor="LightCoral" HorizontalAlign="Center" />
                        <HeaderStyle BackColor="#5A49A7" HorizontalAlign="Center" />
                        <FooterStyle BackColor="#669900" HorizontalAlign="Center" />
              
                
                
                </asp:TemplateField>

کد اون برنامه به صورت زیر بود

کد:
  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 = DirectCast(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 strConnection As String = System.Configuration.ConfigurationManager.ConnectionStrings("ssgshopConnectionString").ConnectionString
            Dim Cnn As New SqlConnection(strConnection)
            Dim Cmd As New SqlCommand(strSQL, Cnn)

            Try
                Cnn.Open()
                Cmd.ExecuteNonQuery()
            Catch ex As SqlException
                Response.Write(ex.Message.ToString())
            Finally
                If (Cmd IsNot Nothing) Then Cmd.Dispose()
                If (Cnn.State <> ConnectionState.Closed) Then Cnn.Close()
                BindGridView(IIf(ViewState("drpPagingIndex") IsNot Nothing, Convert.ToInt32(ViewState("drpPagingIndex")), 0), 5)
            End Try
        End If
    End Sub
حالا سوال من اینه چه قسمت هایی از این کد برای طراحیه من لازمه؟چون وقتی من این کد را اجرا میکنم خطا میگیرد.ایا دوستان راه دیگری بدبن منظور سراغ ندارند؟
ممنون
 

fereshte22

Member
مشکل من با کد زیر حل شد
کد:
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
مشکل چیه؟
 

جدیدترین ارسال ها

بالا