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

نام تاپیک: اشکال در حلقه foreach

  1. #1

    Question اشکال در حلقه foreach

    من در برنامه ی خودم از کد زیر برای پیمایش ردیف های یک دیتاگرید ویو استفاده کردم تا هر کدام از ردیف هایی رو که chek box آن تیک خورده بود رو پاک کنم ولی متاسفانه با اجرای این حلقه تنها آخرین رکوردی که تیک خورده پاک می شود یا به عبارتی آخرین رکوردی که chek box آن را تغییر دادم چون گاهی پیش آمده که در آخرین لحظه تیک یکی از آن ها رو برداشتم اما همان ردیف که تیک آن را برداشتم پاک می شود. (آخرین ردیف تغییر کرده).
    چکار کنم که حتما تمامی ردیف هایی که تیک دارند پاک شوند؟
    foreach (DataGridViewRow x in dGVBedehkaran.Rows)
    {
    if (x.Cells[0].Selected == true)
    {
    try
    {
    da2 = new SqlDataAdapter("delete from bedehi where be_date='" + x.Cells[1].Value.ToString() + "'", con1);
    dt2 = new DataTable();
    da2.Fill(dt2);
    }
    catch (Exception ex) { MessageBox.Show(ex.Message); }
    }
    }

  2. #2
    کاربر دائمی آواتار saied_hacker
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    404 Not Found
    پست
    703

    نقل قول: اشکال در حلقه foreach

    احتمالا مشکل از اینجاس نه خود حلقه :)
    x.Cells[0].Selected == true


    اخه شما میگی اون ردیفی که انتخاب شده فلان کار روش انجام بشه ( خودتونم میگید یه ادیتی رو روی یکی انجام دادید و اون پاک شده چون اون انتخاب شده ).
    شما اصلا مقدار اون خونه رو بررسی نمی کنید.
    شما باید مقدارش رو بررسی کنید.ببنید فیلد/پراپرتی value نداره ؟!

  3. #3
    مدیر بخش آواتار مهرداد صفا
    تاریخ عضویت
    تیر 1391
    محل زندگی
    select Country,City From World where Country.Name=IRAN and City.Contains(حضرت معصومه(ع))
    پست
    1,499

    نقل قول: اشکال در حلقه foreach

    با سلام
    خصوصیت Selected مشخص میکند که Cell انتخاب شده است یا نه و چون آخرین سلولی که آن را ویرایش میکنید Focus دارد و در حالت انتخاب قرار دارد حذف میشود.
    چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست
    **********
    اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ

  4. #4
    کاربر دائمی آواتار group45
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    کرمان
    سن
    36
    پست
    549

    نقل قول: اشکال در حلقه foreach

    با سلام
    برای این کار یه ایونت هست مخصوص دیتاگریدویو به اسم selectedcell تو این کدتون رو بنویسید هر بار که هر رکوردی انتخاب میشه این ایونت اونو پاک کنه

  5. #5

    نقل قول: اشکال در حلقه foreach

    نقل قول نوشته شده توسط M.safa مشاهده تاپیک
    با سلام
    خصوصیت Selected مشخص میکند که Cell انتخاب شده است یا نه و چون آخرین سلولی که آن را ویرایش میکنید Focus دارد و در حالت انتخاب قرار دارد حذف میشود.
    خوب حالا راه حلش چیه؟ لطفا کمکم کنید.

  6. #6

    نقل قول: اشکال در حلقه foreach

    باید مقدار سلول را مقایسه کنید:
    if (Convert.ToBoolean(x.Cells[0].Value) == true)

  7. #7
    کاربر دائمی آواتار group45
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    کرمان
    سن
    36
    پست
    549

    نقل قول: اشکال در حلقه foreach

    نقل قول نوشته شده توسط minabr مشاهده تاپیک
    خوب حالا راه حلش چیه؟ لطفا کمکم کنید.
    با سلام
    اسم کامل ایونت هست cell mouse click که اگه یه سلول یک بار با موس روش کلیک بشه فعال میشه. e به شما کمک میکنه تا اندیس ردیف رو پیدا کنید. و با مراجعه به اون column که منحصر بفرده و بدست آوردن مقدارش اونو پاک کنید

  8. #8

    نقل قول: اشکال در حلقه foreach

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    باید مقدار سلول را مقایسه کنید:
    if (Convert.ToBoolean(x.Cells[0].Value) == true)
    بی نهایت ازتون متشکرم. مشکلم با جواب خوب شما حل شد.

  9. #9

    نقل قول: اشکال در حلقه foreach

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    باید مقدار سلول را مقایسه کنید:
    if (Convert.ToBoolean(x.Cells[0].Value) == true)
    دوست عزیز، همانطور که گفتم مشکلم با جواب شما حل شد اما فکر می کنم یک اشکال دیگه هم وجود داره چون برنامه رو که اجرا می کنم اولین رکوردی که تیک خورده رو پاک می کنه و بقیه رو پاک نمیکنه. خودم فکر کنم اشکال از data set‌ باشه، احتمالا باید پاک بشه. درسته؟ به نظر شما مشکل از کجاست و راه حلش چیه؟
    foreach (DataGridViewRow x in dGVPayment.Rows)
    {
    if (Convert.ToBoolean(x.Cells[1].Value) == true)
    {
    idpay = x.Cells[0].Value.ToString();
    try
    {
    da8 = new SqlDataAdapter("delete from payments where id='" + idpay + "'", con1);
    dt8 = new DataTable();
    da8.Fill(dt8);
    }
    catch (Exception ex) { MessageBox.Show(ex.Message); }
    dGVPayment.Rows.Remove(x);
    }
    }

  10. #10

    نقل قول: اشکال در حلقه foreach

    برای حذف همه سطرهای تیک خورده از حلقه for استفاده کنید. برای پیمایش هم از آخرین سطر گریدویو چک کنید و هر بار شمارنده حلقه رو یک واحد کم کنید.
    حذف سطر از گریدویو باید داخل try و بعد از حذف از دیتابیس باشه تا درصورتی که در هنگام حذف از دیتابیس خطا پیش آمد و از دیتابیس حذف نشد ، سطر از گریدویو هم حذف نشه.
    برای اعمالی مثل درج و حذف و آپدیت از sqlcommand استفاده کنید:

    using (SqlCommand cmd = new SqlCommand())
    {
    cmd.Connection = con1;
    con1.Open();
    for (int i = dGVPayment.RowCount - 1; i >= 0; i--)
    {
    if (Convert.ToBoolean(dGVPayment.Rows[i].Cells[1].Value) == true)
    {
    try
    {
    cmd.CommandText = "delete from payments where id='" + dGVPayment.Rows[i].Cells[0].Value + "'";
    cmd.ExecuteNonQuery();
    // After row deleted from databese , delete row from datagridview.
    dGVPayment.Rows.RemoveAt(i);
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }
    }
    con1.Close();
    }

تاپیک های مشابه

  1. سوال: مشکل در حلقه foreach
    نوشته شده توسط msozan در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: یک شنبه 22 خرداد 1390, 12:10 عصر
  2. سوال: حلقه foreach
    نوشته شده توسط mehdihadeli در بخش C#‎‎
    پاسخ: 3
    آخرین پست: دوشنبه 15 شهریور 1389, 05:06 صبح
  3. سوال: حلقه foreach
    نوشته شده توسط sayan در بخش C#‎‎
    پاسخ: 4
    آخرین پست: جمعه 01 مرداد 1389, 16:35 عصر
  4. سوال: کمک در قرار دادن تعداد چاپ در حلقه Foreach
    نوشته شده توسط aHMaDMozahem در بخش PHP
    پاسخ: 3
    آخرین پست: چهارشنبه 01 مهر 1388, 13:35 عصر
  5. اشکال در حلقه do-while
    نوشته شده توسط leilast در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 3
    آخرین پست: شنبه 08 دی 1386, 21:44 عصر

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

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