דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. צביעת שורות ב dataGridView לפי ערך תא (c# winform)

צביעת שורות ב dataGridView לפי ערך תא (c# winform)

מתוזמן נעוץ נעול הועבר תכנות
6 פוסטים 2 כותבים 211 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • M מנותק
    M מנותק
    mekev
    כתב ב נערך לאחרונה על ידי
    #1

    יש לי טבלה (dataGridView) השולפת מידע מSQL
    עמודות בטבלה: שם לקוח, מספר טלפון, פעיל (כן/לא)

    אני מעוניין שהשורות של הלקוחות הלא פעילים יצבעו באפור

    ניסיתי
    הסתבכתי
    אשמח לעזרתכם

    dovidD תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לmekev ב נערך לאחרונה על ידי
      #2

      @mekev תציג את הקוד שממלא את הDataGridView, ואראה לך איך לעשות את זה.

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      M תגובה 1 תגובה אחרונה
      0
      • M מנותק
        M מנותק
        mekev
        השיב לdovid ב נערך לאחרונה על ידי
        #3

        @dovid

        זה הקוד שממלא את הטבלה

        SqlConnection con = new SqlConnection('SQL login information')

                con.Open();
                SqlCommand cmd = con.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "SELECT ID as 'מזהה', CustomerName as 'שם לקוח',PhoneNumber as 'טלפון',active as 'פעיל' from Customertable";
                cmd.ExecuteNonQuery();
                DataTable dt = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                dataGridView1.DataSource = dt;
                con.Close();
        
        dovidD תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          השיב לmekev ב נערך לאחרונה על ידי dovid
          #4

          @mekev
          תראה אם זה עוזר לך

           using (var con = new SqlConnection("XYZ"))
              {
              con.Open();
              SqlCommand cmd = con.CreateCommand();
              cmd.CommandText = "SELECT TOP 200 * FROM TRUMOT";
              DataTable dt = new DataTable();
              SqlDataAdapter da = new SqlDataAdapter(cmd);
              da.Fill(dt);
              dataGridView1.DataSource = dt;
          }
          
          dataGridView1.DataBindingComplete += (s, e) =>
          {
              foreach (DataGridViewRow item in dataGridView1.Rows)
                  if (item.Cells[2].Value?.ToString() == "012")
                      item.DefaultCellStyle.BackColor = Color.Yellow;
          };
          

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          0
          • M מנותק
            M מנותק
            mekev
            כתב ב נערך לאחרונה על ידי
            #5

            @dovid
            תראה אם זה עוזר לך

            עזרת לי מאוד!!

            היות הפורום הינו פומבי
            ע"מ להעניק עזרה וסיוע לא רק ברמה הפרטנית
            אלא בעיקר שמנ-דהו בעתיד שיתקל בבעיה דומה יוכל לחפש ולמצוא בקלות

            אעדכן ש:

            התחביר dataGridView1.DataBindingComplete += (s, e) =>
            יצר שגיאה (Error CS0136)

            ולכן פשוט שמתי את הקוד המצ"ב במאפיין RowPrePaint
            וזה עובד מעולה

                       foreach (DataGridViewRow item in dataGridView1.Rows)
                        if (item.Cells["פעיל"].Value is false)
                        {
                            item.DefaultCellStyle.BackColor = Color.Yellow;
                        }
            
                        else
                        {
                            item.DefaultCellStyle.BackColor = Color.White;
                        }
            
            dovidD תגובה 1 תגובה אחרונה
            0
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              השיב לmekev ב נערך לאחרונה על ידי dovid
              #6

              @mekev אימאלה, הפתרון שלך לא טוב, הוא עובר על כל השורות, כמספר השורות, כלומר אם יש לך 1000 שורות הוא עובר על כל אחת אלף פעם (האירוע RowPrePaint קורה פר שורה, כל פעם שהיא מוצגת על המסך, ובתוך האירוע עשית מעבר על כלל השורות).
              השגיאה שהבאת היא התנגשות בין שני משתנים בעלי אותו שם, וזה בגלל שכנראה יש e מוכרז כבר קודם, נסה את הקוד הבא:

              
              using (var con = new SqlConnection("XYZ"))
              {
                  con.Open();
                  SqlCommand cmd = con.CreateCommand();
                  cmd.CommandText = "SELECT TOP 200 * FROM TRUMOT";
                  DataTable dt = new DataTable();
                  SqlDataAdapter da = new SqlDataAdapter(cmd);
                  da.Fill(dt);
                  dataGridView1.DataSource = dt;
              }
               
              dataGridView1.DataBindingComplete += (s2, e2) =>
              {
                  foreach (DataGridViewRow item in dataGridView1.Rows)
                      if (item.Cells["פעיל"]?.Value == false)
                          item.DefaultCellStyle.BackColor = Color.Yellow;
              };
              

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              תגובה 1 תגובה אחרונה
              2
              • dovidD dovid העביר נושא זה מ-תכנות ב-

              בא תתחבר לדף היומי!
              • התחברות

              • אין לך חשבון עדיין? הרשמה

              • התחברו או הירשמו כדי לחפש.
              • פוסט ראשון
                פוסט אחרון
              0
              • דף הבית
              • קטגוריות
              • פוסטים אחרונים
              • משתמשים
              • חיפוש
              • חוקי הפורום