Home > DeveloperSection > Forums > How to set DataGridView cell style unchangeable
Samuel Fernandes
Samuel Fernandes

Total Post:156

Points:1096
Posted on    March-06-2014 11:02 PM

 C# C# 
Ratings:


 1 Reply(s)
 1039  View(s)
Rate this:

I'm trying to set different back color of my DayaGridview rows by specific column

This is my Code:

private void SetFormat_dgv_Scheduled(string columnsname)

    {

        dgv_Scheduled.Sort(dgv_Scheduled.Columns[columnsname], ListSortDirection.Ascending);

        Color clr = Color.Red;

        string dt = (Convert.ToDateTime(dgv_Scheduled.Rows[0].Cells[columnsname].Value)).ToShortDateString();

        foreach(DataGridViewRow row in dgv_Scheduled.Rows)

        {

            if (Convert.ToDateTime(row.Cells[columnsname].Value).ToShortDateString() != dt)

            {

                if(clr==Color.Red)

                {

                    clr = Color.LightBlue;

                }

                else

                {

                    clr = Color.Red;

                }

            }     

             row.DefaultCellStyle.BackColor = clr;

        }          

    }

It works fine.

But when I click header to autosort, all format will set to default style.

(All red rows change back to white)

Is there any way that I can set format unchangeable?

Thanks.



Pravesh Singh

Total Post:411

Points:2881
Posted on    March-06-2014 11:17 PM

Hi Samuel,

Try calling  SetFormat_dgv_Scheduled method in CellFormatting Event as shown

   private void SetFormat_dgv_Scheduled(string columnsname)

    {

        //dataGridView1.Sort(dataGridView1.Columns[columnsname], ListSortDirection.Ascending);

        Color clr = Color.Red;

        string dt = (Convert.ToDateTime(dgv_Scheduled.Rows[0].Cells[columnsname].Value)).ToShortDateString();

        foreach (DataGridViewRow row in dgv_Scheduled.Rows)

        {

            if (Convert.ToDateTime(row.Cells[columnsname].Value).ToShortDateString() != dt)

            {

                if (clr == Color.Red)

                {

                    clr = Color.LightBlue;

                }

                else

                {

                    clr = Color.Red;

                }

            }

            row.DefaultCellStyle.BackColor = clr;

        }

    }

    private void dgv_Scheduled_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)

    {

        SetFormat_dgv_Scheduled("columnsname");

    }


Don't want to miss updates? Please click the below button!

Follow MindStick