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

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

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

מתוזמן נעוץ נעול הועבר תכנות
6 פוסטים 2 כותבים 143 צפיות
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
  • התחברות

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

  • התחברו או הירשמו כדי לחפש.