نمایش نتایج 1 تا 2 از 2

نام تاپیک: مشکل در استفاده از اتصال ویزاردی گریدویو به دیتابیس برای حذف سطرهای انتخاب شده

  1. #1

    مشکل در استفاده از اتصال ویزاردی گریدویو به دیتابیس برای حذف سطرهای انتخاب شده

    سلام
    من یک گریدویو دارم که در اون از چک باکس برای انتخاب سطرهای گرید و حذف انها استفاده میشود.و از کد زیر استفاده کردم


    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

    مشکل چیه؟
    در ضمن من حتما میخواهم از روش دوم استفاده کنم.

  2. #2
    سلاممن مشکلم را یه جور دیگه مطرح میکنم .دلیل این که من میگم به صورت ویزاردی میخواهم گرید ویو را بایند کنم این است که برای برای ویرایش سطرهای گرید ویو به این صورت عمل کردم که خاصیت AUTOGNRATEEDITBUTTON را در گریدویو TRUE کردم واز کد زیر استفاده کردم

    Sub AuthorsGridView_RowUpdating(ByVal sender AsObject, ByVal e As GridViewUpdateEventArgs)
    AuthorsGridView.DataSourceID =
    "SqlDataSource1"
    Dim index AsInteger = AuthorsGridView.EditIndex
    Dim row As GridViewRow = AuthorsGridView.Rows(index)
    Dim name As TextBox = CType(row.FindControl("nameTextBox"), TextBox)
    e.NewValues(
    "name") = name.Text

    EndSub


    حالا وقتی با روش اول گرید ویو را بایند میکنم EDIT نمیکند و خطای زیر را میدهد.The GridView 'AuthorsGridView' fired event RowEditing which wasn't handledایا با این روش EDIT حتما باید به صورت ویزارد گریدویو را بایند کرد.من البته در چندین صفحه ا ز این روش استفاده کردهام و نمیخواهم روشم را عوض کنم

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •