واضح آرشیو وب فارسی:سایت ریسک: قرار دادن چک باکس در گریدویو و حذف سطرهای انتخاب شده fereshte22 19 خرداد 1386, 17:59سلام من میخواهم در گرید ویو چک باکس قرار دهم و یک دکمه حذف که سطرهایی که با چک باکس انتخاب میشوند حذف شوند.من در یک نمونه برنامه دیدم که به صورت زیر عمل کرده بود.البته گرید ویوی من سادهتر از اون نمونه برنامه است. طراحیه من به صورت زیر است <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="#5A 49A 7" 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.Connecti onStrings("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 26 خرداد 1386, 20:01مشکل من با کد زیر حل شد 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-BDE62CSQLEXPRESS;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 مشکل چیه؟
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2269]