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

نام تاپیک: چطوري مي تونم از ديتاست و ديتاتيبل پر شده در دو رويداد استفاده كنم

  1. #1

    چطوري مي تونم از ديتاست و ديتاتيبل پر شده در دو رويداد استفاده كنم

    من يك فرم دارم كه در رويداد btnsearch_click ديتاست و ديتاتبيلم پر مي شود. و مي خواهم از همان در رويداد btndelete_click استفاده كنم و از اين ديتاتيبل ، سطري كه در ديتاگريدم انتخاب شده را حذف كنم .
    كد:


    datatable.Rows(datagrid.CurrentRowIndex).Delete()

    من تمام كد btnsearch را علاوه بر كد بالا را در delete مي نويسم و تمامي سطرهاي ديتاگريدم را حذف ميكند.

  2. #2
    کاربر دائمی آواتار reza6384
    تاریخ عضویت
    آبان 1386
    محل زندگی
    تهران - شهرک ژاندارمری
    سن
    40
    پست
    740

    نقل قول: چطوري مي تونم از ديتاست و ديتاتيبل پر شده در دو رويداد استفاده كنم

    من چندین بار جمله اول شما رو خوندم . نمی دونم متوجه شدم یا نه ، چون نفهمیدم منظورتون از "همان" چیه. اگر منظورتون اینه که می خواهید در رویداد BtnDelete_Click ابتدا سطر جاری DataGridViewرو با کدی که بالا نوشتید خذف کنید و بعد رویداد BtnSearch_Click اتفاق بیفته ، از این کد استفاده کنید :


    BtnSearch_Click(Me,e)

  3. #3

    نقل قول: چطوري مي تونم از ديتاست و ديتاتيبل پر شده در دو رويداد استفاده كنم

    نه دوست عزيز ، btnsearch رخ داده حالا من مي خواهم كه ، از ديتاست و ديتاتيبل پر شده در btnsearch در رويداد btndelete استفاده كنم و سطر انتخاب شده در ديتاگريد را در ديتاتيبلي كه در رويداد btnsearch پر شده را پيدا كند و حذف كند .
    اميدوارم توضيحم واضح باشد.

  4. #4
    کاربر دائمی آواتار kablayi
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    شیراز
    پست
    773

    نقل قول: چطوري مي تونم از ديتاست و ديتاتيبل پر شده در دو رويداد استفاده كنم

    اگه از دیتاست یا دیتاتیبل استفاده میکنید مشکلی نیست تا زمانی که برنامه باز هست موقعیت دیتاست تغییری نمیکنه مگر اینکه خودتون تغییرش بدین ...
    مثلا شما در رویداد BtnSearch فیلد مورد نظرتونو در موقعیت 5 از جدولتون پیدا کرده باشین تا زمانی که دوباره عملی رو روی دیتاست انجان ندین همون موقعیت 5 رو نشون میده ...
    پس شما اگر کار سرچ رو انجام بدین بعد دکمه btnbelete رو بزنید عملیات delete روی همون موقعیت قبلی انجام میشه ...
    این کد رو در رویداد کلیک دیتاگرید بنویسید ... (انتخاب سطرمورد نظر در دیتاگرید )

    dim pos as integer = Me.BindingContext(datatable,"tablaName").Position


    حالا شماره index فیلد مورد نظر در دیتاتیبل رو دارید و هر عملیاتی از جمله del رو روش انجام بدین ...

    موفق باشید ...

  5. #5

    نقل قول: چطوري مي تونم از ديتاست و ديتاتيبل پر شده در دو رويداد استفاده كنم

    ممنون از راهنمايي تون
    من هم همين كار رو كردم ولي تمام سطرها را پاك ميكند ، نه فقط سطر انتخابي را

  6. #6

    نقل قول: چطوري مي تونم از ديتاست و ديتاتيبل پر شده در دو رويداد استفاده كنم

    ببينيد ، من كدم رابه اين ترتيب نوشته ام .

    Dim daTest AsNew SqlDataAdapter
    Dim cnTest AsNew System.Data.SqlClient.SqlConnection
    Dim dstest AsNew DataSet
    Dim strSql AsString

    Dim strCn AsString = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=""DB-university"";Data Source=""user-cf89685757"""
    Dim sqlCmd AsNew SqlCommand
    cnTest.ConnectionString = strCn
    Dim myDT AsNew DataTable
    Try

    cnTest.Open()
    Catch ex As Exception
    MsgBox(ex.Message)
    MsgBox(ex.Source)
    EndTry

    strSql = "SELECT u_stude.Id as [شماره دانشجويي],name as [نام],family as [نام خانوادگي],u_stude.vorudi as [ورودي],u_stude.avg as [معدل],u_selectunit.Idterm as [ترم],coursename as [نام درس],score as نمره],email as [ايميل] FROM u_stude,u_selectunit,u_course,u_term,u_voroodi "
    strSql = strSql + " WHERE u_stude.Id = u_selectunit.Id "
    strSql = strSql + " AND u_selectunit.courseno = u_course.courseno "
    strSql = strSql + " AND u_term.Idterm = u_selectunit.Idterm "
    strSql = strSql + " AND u_voroodi.vorudi = u_stude.vorudi "
    If tbId.Text <> "" Then

    strSql = strSql + " AND u_stude.Id = '" + tbId.Text + "' "
    EndIf

    If tbname.Text <> "" Then

    strSql = strSql + " AND name like N'%" + tbname.Text + "%'"
    EndIf

    If tbfamily.Text <> "" Then

    strSql = strSql + " AND family like N'%" + tbfamily.Text + "%'"
    EndIf

    IfCStr(cbterm.SelectedValue) <> "" Then

    Dim strSlctTerm AsString

    strSlctTerm =
    CStr(cbterm.SelectedValue)
    If strSlctTerm <> "" Then

    strSql = strSql + " AND Idterm = '" + strSlctTerm + "'"
    EndIf

    EndIf

    IfCStr(cbvorudi.SelectedValue) <> "" Then

    Dim strSlctVorudi AsString

    strSlctVorudi =
    CStr(cbvorudi.SelectedValue)
    If strSlctVorudi <> "" Then

    strSql = strSql + " AND Idvorudi = '" + strSlctVorudi + "'"
    EndIf

    EndIf

    sqlCmd.CommandText = strSql
    sqlCmd.Connection = cnTest
    daTest.SelectCommand = sqlCmd
    Try

    daTest.Fill(dstest)
    daTest.Fill(myDT)
    Dim pos AsInteger = Me.BindingContext(dstest.DefaultViewManager).Positio n
    Me.BindingContext(dstest.DefaultViewManager).RemoveA t(pos)
    myDT.Rows(pos).Delete()
    dgdisplay.Refresh()
    dgdisplay.DataSource = dstest.DefaultViewManager
    dgdisplay.DataSource = dstest.Tables(0)

    Catch ex As Exception
    MsgBox(ex.Message)
    MsgBox(ex.Source)
    EndTry



    اما براي pos در هر شرايطي مقدار 0 را برميگرداند و بر روي خط بنفش خطاي collection itself is not modifiable را مي دهد .
    و وقتي كه سطر بنفش را comment ميكنم و اجازه مي دهم سطر myDT.Rows(pos).Delete اجرا شود بدون خطا تمام مراحل سپري مي شود و سطري حذف نمي شود.

    آخرین ویرایش به وسیله sheida-peyravi : سه شنبه 09 مهر 1387 در 09:35 صبح

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

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