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

نام تاپیک: رنگی کردن سطر های datagrid بر اساس شرط خاص

  1. #1
    کاربر دائمی آواتار ozzy_mra
    تاریخ عضویت
    مهر 1388
    محل زندگی
    تهران
    پست
    544

    رنگی کردن سطر های datagrid بر اساس شرط خاص

    دوستان سلام
    می دونم سوالم تکراریه ولی لینکشو پیدا نکردم
    می خواستم تو دیتا گریدم هر سطر با توجه به شرط خاصی دارای یه رنگ خاص! بشه
    مثلاً بر اساس مقدار یه فیلد، اگر به فرض مقدار اون فیلد کمتر از 5 باشه سطر گرید آبی بشه اگر بین 5 تا 10 باشه اون سطر زرد واگه بیشتر از 10 باشه آبی بشه .
    اگه ممکنه راهنماییم کنید. ممنون

  2. #2
    کاربر تازه وارد آواتار Sk1900n3
    تاریخ عضویت
    آذر 1388
    محل زندگی
    سبزوار
    سن
    35
    پست
    76

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    سلام دوست من
    کد

    for (int index = 0; index < this.dataGrd.RowCount; index++)
    {
    if (this.dataGrd.Rows[index].Cells["name Field"].Value.ToString() == "مقدار")
    this.dataGrd.Rows[indexer].DefaultCellStyle.BackColor = Color.Red;
    }

  3. #3
    کاربر دائمی آواتار ایمان مدائنی
    تاریخ عضویت
    آذر 1386
    محل زندگی
    تهران
    پست
    1,463

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    براي اينكار ميتوني از حلقه استفاده كني تا بگرده و شرط مورد نظر رو پيدا كنه و در صورت درست بودن شرط رنگ رو عوض كنه
                dataGridView1.Rows[0].DefaultCellStyle.BackColor = Color.Red;

  4. #4

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    با سلام
    پاسخ دوستان دیگر هم کاملا درسته ولی من برای اینکه راحتر باشید پیشنهاد میکنم از foreach استفاده کنید که شما را از کنترل حلقه آسوده میکنه:
     void set_color()
    {
    foreach (DataGridViewRow r in dataGridView2.Rows)
    {
    if (r.Cells[0].Value.ToString() == "A" || r.Cells[0].Value.ToString() == "a")
    {
    foreach (DataGridViewCell c in r.Cells)
    {
    c.Style.BackColor = System.Drawing.Color.MediumAquamarine;
    }

    }
    else if (r.Cells[0].Value.ToString() == "B" || r.Cells[0].Value.ToString() == "b")
    {
    foreach (DataGridViewCell c in r.Cells)
    {
    c.Style.BackColor = System.Drawing.Color.LightSteelBlue;

    }
    }


    }

    }

  5. #5
    کاربر دائمی آواتار ozzy_mra
    تاریخ عضویت
    مهر 1388
    محل زندگی
    تهران
    پست
    544

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    نقل قول نوشته شده توسط shahin_sharifi مشاهده تاپیک
    با سلام
    پاسخ دوستان دیگر هم کاملا درسته ولی من برای اینکه راحتر باشید پیشنهاد میکنم از foreach استفاده کنید که شما را از کنترل حلقه آسوده میکنه:
     void set_color()
    {
    foreach (DataGridViewRow r in dataGridView2.Rows)
    {
    if (r.Cells[0].Value.ToString() == "A" || r.Cells[0].Value.ToString() == "a")
    {
    foreach (DataGridViewCell c in r.Cells)
    {
    c.Style.BackColor = System.Drawing.Color.MediumAquamarine;
    }

    }
    else if (r.Cells[0].Value.ToString() == "B" || r.Cells[0].Value.ToString() == "b")
    {
    foreach (DataGridViewCell c in r.Cells)
    {
    c.Style.BackColor = System.Drawing.Color.LightSteelBlue;

    }
    }


    }

    }
    خیلی ممنون فقط من این تابع رو بعد از بایند شدن دیتا به گرید باید فراخوانی کنم دیگه؟
    در این صورت در مورد تعداد رکورد های بالا برنامه هنگ نمی کنه؟راهی نیست که همزمان با بایند کردن اطلاعات این اعمال انجام بشه؟
    مثلاً بیایم سطر های دیتا ست یا دیتا تیبل رو دونه دونه تو یه حلقه بخونیم و بعد در اونجا شرایط رو بررسی کنیم و سطر ها رو رنگ کنیم؟

  6. #6
    کاربر دائمی آواتار ozzy_mra
    تاریخ عضویت
    مهر 1388
    محل زندگی
    تهران
    پست
    544

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    راهی برای اینکه همزمان با بایند کردن این کار رو انجام بدیم نیست؟
    کلاً روش بهینه تری وجود نداره؟ برای جدولی با 5 میلیون رکورد خیلی از زمان صرف این کار میشه

  7. #7
    کاربر دائمی آواتار ایمان مدائنی
    تاریخ عضویت
    آذر 1386
    محل زندگی
    تهران
    پست
    1,463

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    ميتوني اول ديتا گريد رو پر كني و بعد يك PROGRESS BAR بزاري زير گريد تا اين كار را انجام بده و برنامه هنگ نكنه
    و بعد VALUE شي PROGRESS BA برابر با مقدار ركوردها قرار بدي تا در زمان مناسب پر بشه
    بعد از خوندن هر ركورد يك واحد به PROGRESS BA اضافه بشه
    دوست عزيز راه ديگري نيست چون ديتا ست يك جدول مجازي است و خاصيت BACK COLOR نداره
    مجبوري اينكار را بكني مگر اينكه ركوردها را خط به خط داخل گريد بريزي

  8. #8
    کاربر دائمی آواتار ozzy_mra
    تاریخ عضویت
    مهر 1388
    محل زندگی
    تهران
    پست
    544

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    نقل قول نوشته شده توسط iman_lovely666 مشاهده تاپیک
    ميتوني اول ديتا گريد رو پر كني و بعد يك PROGRESS BAR بزاري زير گريد تا اين كار را انجام بده و برنامه هنگ نكنه
    و بعد VALUE شي PROGRESS BA برابر با مقدار ركوردها قرار بدي تا در زمان مناسب پر بشه
    بعد از خوندن هر ركورد يك واحد به PROGRESS BA اضافه بشه
    دوست عزيز راه ديگري نيست چون ديتا ست يك جدول مجازي است و خاصيت BACK COLOR نداره
    مجبوري اينكار را بكني مگر اينكه ركوردها را خط به خط داخل گريد بريزي
    خیلی ممنونم
    با BackgroundWorker این کارو انجام بدم دیگه؟
    فقط دستوری که تعداد رکوردهای دیتا گرید رو بر می گردوند رو بهم میگید

  9. #9
    کاربر دائمی آواتار ایمان مدائنی
    تاریخ عضویت
    آذر 1386
    محل زندگی
    تهران
    پست
    1,463

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    والا من با BackgroundWorker كار نكردم
    ولي دستوري كه من براي برگرداندن ركوردها استفاده ميكنم اينه
    DataGridView1.Row.Count;

  10. #10

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    نقل قول نوشته شده توسط ozzy_mra مشاهده تاپیک
    خیلی ممنونم
    با BackgroundWorker این کارو انجام بدم دیگه؟
    فقط دستوری که تعداد رکوردهای دیتا گرید رو بر می گردوند رو بهم میگید
    دوست عزیز اگر شما دیتا گرید رو به سورس بایند کنید دیتا یکباره در داخل گرید ریخته میشه ولی اگر بخواهید دونه دونه اینکار رو انجام بدید سربار بیشتری رو به سیستم تحمیل میکنید.

    در مورد background worker باید بگم که شما نمی تونید استفاده کنید.چون این ابزار فقط توابع و عملیات محاسباتی رو پشتیبانی میکنه و اگر در داخل این عملیات کنترلی همچون گرید حضور داشته باشه خطا خواهد داد. شما میتونید قبل و بعد از تابع رنگی کردن یک progress bar رو نمایش و سپس مخفی کنید که کاربر در جریان عملیات قرار بگیره.

  11. #11
    کاربر دائمی آواتار M.YasPro
    تاریخ عضویت
    آبان 1386
    محل زندگی
    Kernel
    پست
    1,171

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    ميتوني اول ديتا گريد رو پر كني و بعد يك PROGRESS BAR بزاري زير گريد تا اين كار را انجام بده و برنامه هنگ نكنه
    progressbar فقط مامور نمایش پیشرفت یک عملیات هست و ربطی به هنگ کردن یا نکردن پروسس نداره .
    اگر تعداد رکورد هاتون زیاده باید از thread ها استفاده کنید .
    اما اگر تعداد کم هست :

    private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
    if (dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString() == "a")
    dataGridView1.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.Red;
    }

    (البته کد بالا هم بعد از بایند شدن گرید به صورت اتوماتیک و به تعداد رکورد های دیتاسورس شما فایر میشه)
    شاید ایونت بهتری برای اینکار وجود داشته باشه .

    موفق باشید .

  12. #12
    کاربر دائمی آواتار ozzy_mra
    تاریخ عضویت
    مهر 1388
    محل زندگی
    تهران
    پست
    544

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    نقل قول نوشته شده توسط shahin_sharifi مشاهده تاپیک
    دوست عزیز اگر شما دیتا گرید رو به سورس بایند کنید دیتا یکباره در داخل گرید ریخته میشه ولی اگر بخواهید دونه دونه اینکار رو انجام بدید سربار بیشتری رو به سیستم تحمیل میکنید.

    در مورد background worker باید بگم که شما نمی تونید استفاده کنید.چون این ابزار فقط توابع و عملیات محاسباتی رو پشتیبانی میکنه و اگر در داخل این عملیات کنترلی همچون گرید حضور داشته باشه خطا خواهد داد. شما میتونید قبل و بعد از تابع رنگی کردن یک progress bar رو نمایش و سپس مخفی کنید که کاربر در جریان عملیات قرار بگیره.
    پس با این حساب از یه progress bar تو background worker نمی تونم استفاده کنم دیگه؟

  13. #13
    کاربر دائمی آواتار ozzy_mra
    تاریخ عضویت
    مهر 1388
    محل زندگی
    تهران
    پست
    544

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    نقل قول نوشته شده توسط M.YasPro مشاهده تاپیک
    progressbar فقط مامور نمایش پیشرفت یک عملیات هست و ربطی به هنگ کردن یا نکردن پروسس نداره .
    اگر تعداد رکورد هاتون زیاده باید از thread ها استفاده کنید .
    اما اگر تعداد کم هست :

    private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
    if (dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString() == "a")
    dataGridView1.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.Red;
    }

    (البته کد بالا هم بعد از بایند شدن گرید به صورت اتوماتیک و به تعداد رکورد های دیتاسورس شما فایر میشه)
    شاید ایونت بهتری برای اینکار وجود داشته باشه .

    موفق باشید .
    ممنون برای تعداد رکورد زیاد چطور باید انجام بدم؟
    اگه ممکنه یه مثال هم از thread برای بزنید ممنون
    من خودم اینجوری انجام دادم
            private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
    //progressBar1.Maximum = dataGridView1.Rows.Count;
    foreach (DataGridViewRow r in dataGridView1.Rows)
    {
    // progressBar1.Value += 1;
    if (Convert.ToInt32(r.Cells[6].Value) == 1)
    {
    foreach (DataGridViewCell c in r.Cells)
    {
    c.Style.BackColor = System.Drawing.Color.MediumAquamarine;
    }

    }
    else if (Convert.ToInt32(r.Cells[6].Value) == 2)
    {
    foreach (DataGridViewCell c in r.Cells)
    {
    c.Style.BackColor = System.Drawing.Color.LightSteelBlue;

    }
    }
    else if (Convert.ToInt32(r.Cells[6].Value) == 3)
    {
    foreach (DataGridViewCell c in r.Cells)
    {
    c.Style.BackColor = System.Drawing.Color.YellowGreen;
    }
    }
    }
    backgroundWorker1.CancelAsync();
    }

    که بعد از بایند کردن دیتا ست به دیتا گرید بک گراند ورکرو صدا میزنم
    خواستم از progressBar هم تو BackGroundWorker استفاده کنم که خطای اینکه دو تا ترد تو هم نمی تونن کار کنن رو داد

  14. #14
    کاربر دائمی آواتار M.YasPro
    تاریخ عضویت
    آبان 1386
    محل زندگی
    Kernel
    پست
    1,171

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    مدیریت کردن تردها کار آسونی نیست .
    شما نمیتونی از آبجکتی که یه ترد دیگه ساخته تو یه ترد دیگه استفاده کنی .
    اینجا و اینجا و اینجا رو ببینید .

  15. #15
    کاربر دائمی آواتار ozzy_mra
    تاریخ عضویت
    مهر 1388
    محل زندگی
    تهران
    پست
    544

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    برای اینکه این رنگی شدن سطرها تا اتمام اجرای قبرنامه باقی بمونه باید چکار کنم چون وقتی روی یکی از ستونهای دیتا گرید کلیک می کنم که مثلاً بر اساس همون ستون مرتب کنه رنگ های نا پدید می شوند و یه گرید با سطر های غیر رنگی نمایش داده می شود

  16. #16
    کاربر دائمی آواتار hakelberfin
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    تبریز
    پست
    137

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    سلام
                 private void dataGridViewCost_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
    if (this.dataGridViewCost.Columns[e.ColumnIndex].Name.Trim().Equals("ColumnName"))
    {
    String stringValue = e.Value as string;
    if (stringValue == null)
    return;
    if (stringValue == "hello")
    this.dataGridViewCost.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
    }
    }

  17. #17

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    نقل قول نوشته شده توسط Sk1900n3 مشاهده تاپیک
    سلام دوست من
    کد

    for (int index = 0; index < this.dataGrd.RowCount; index++)
    {
    if (this.dataGrd.Rows[index].Cells["name Field"].Value.ToString() == "مقدار")
    this.dataGrd.Rows[indexer].DefaultCellStyle.BackColor = Color.Red;
    }



    سلام
    خط اول داخل حلقه this.dataGrd.RowCount -1 باید باشه چون از صفر شروع میشه -1 باید باشه
    و اینکه شمارنده حلفه یک حرفی باشه صحیح تره

  18. #18

    نقل قول: رنگی کردن سطر های دیتا گرید بر اساس شرط خاص

    اقا کافیه رکورد ها به صورت خط به خط و نه کلی داخل گرید بریزید تا اوکی بشه

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

  1. پاسخ: 16
    آخرین پست: دوشنبه 09 مرداد 1396, 16:36 عصر
  2. بلاک کردن بسته های http بر اساس محتوا
    نوشته شده توسط addr3ss در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: پنج شنبه 09 مهر 1394, 09:54 صبح
  3. آموزش: رنگی کردن سطرهای datagridview بر اساس شرط خاص
    نوشته شده توسط jafarpalideh در بخش C#‎‎
    پاسخ: 6
    آخرین پست: چهارشنبه 04 شهریور 1394, 12:26 عصر
  4. مخفی کردن Page های کریستال بر اساس نوع گزارش
    نوشته شده توسط pouria_bayat در بخش ابزارهای گزارش سازی
    پاسخ: 0
    آخرین پست: یک شنبه 07 تیر 1394, 13:17 عصر
  5. سوال: رنگي كردن يك سطر در گريد بر اساس شرط خاص
    نوشته شده توسط mehrnaz_ss در بخش ASP.NET Web Forms
    پاسخ: 12
    آخرین پست: پنج شنبه 03 مرداد 1392, 19:26 عصر

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

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