How to color some specific cells in HTMLTable?
<p>I developed a training matrix for my company that shows all employees with all training courses provided in the company. Now, I have to develop it in such a way to be easy to edit and update by the admin. I did everything correct except one thing which is giving each group of courses a specific color (since I have 3 types of courses) starting from the fourth cell up to the last cell. FYI, I have two SqlDataSources for developing this matrix:</p>

<p><strong>SqlDataSource1 is for retrieving the GroupID:</strong></p>

<pre><code>&lt;asp:SqlDataSource ID="SqlDataSource1" runat="server"
                ConnectionString="&lt;%$ ConnectionStrings:testConnectionString %&gt;"
                SelectCommand="SELECT [ID] FROM [groups]"&gt;&lt;/asp:SqlDataSource&gt;
</code></pre>

<p><strong>And the SqlDataSource2 will take the GroupID from the SqlDataSource1 and use it to generate the matrix:</strong></p>

<pre><code>&lt;asp:SqlDataSource ID="SqlDataSource2" runat="server"
                                            ConnectionString="&lt;%$ ConnectionStrings:testConnectionString %&gt;"
                                            SelectCommandType="StoredProcedure" SelectCommand="kbiReport" FilterExpression="[Division] like '{0}%'"&gt;

                            &lt;SelectParameters&gt;
                                &lt;asp:Parameter  Name="GroupID"/&gt;
                            &lt;/SelectParameters&gt;

                            &lt;FilterParameters&gt;
                                &lt;asp:ControlParameter ControlID="ddlDivision" Name="DivisionName"
                                                         PropertyName="SelectedValue" Type="String" /&gt;
                            &lt;/FilterParameters&gt;

            &lt;/asp:SqlDataSource&gt;
</code></pre>

<p>Now, since I am using HTMLTable, I need to access the SqlDataSource1 to do some logic like:
if the GroupID = 1, then give this group Blue color and so on. I could be able to do that by doing the following:</p>

<p>My code-behind in C#:</p>

<pre><code>protected void Page_Load(object sender, EventArgs e)
    {

        DataView dv2 = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
        foreach (DataRowView group in dv2)
        {
            SqlDataSource2.SelectParameters[0].DefaultValue = group[0].ToString();
            //create a new HtmlTable object
            HtmlTable table = new HtmlTable();

            DataView dv = (DataView)SqlDataSource2.Select(DataSourceSelectArguments.Empty);
            int columns = dv.Table.Columns.Count;
            int rows = dv.Count;

            //table's formating-related properties
            table.Border = 2;
            table.CellPadding = 3;
            table.CellSpacing = 3;
            table.Width = "900px";

            //to get the css style
            table.Attributes["class"] = "uGrid";

            //create a new HtmlTableRow and HtmlTableCell objects
            HtmlTableRow row;
            HtmlTableRow header = new HtmlTableRow();
            HtmlTableCell cell;


            //for adding the headers to the table
            foreach (DataColumn column in dv.Table.Columns)
            {
                HtmlTableCell headerCell = new HtmlTableCell("th");
                headerCell.InnerText = column.Caption;

                //The following if-else statements are for checking the GroupID and give each group
                //a specific color
                if (group[0].ToString().Equals("1"))
                    headerCell.BgColor = "lightBlue";
                else if (group[0].ToString().Equals("2"))
                    headerCell.BgColor = "lightYellow";
                else if (group[0].ToString().Equals("3"))
                    headerCell.BgColor = "Orange";

                //the header cells to the header
                header.Cells.Add(headerCell);
            }
            table.Rows.Add(header);

            //loop for adding rows to the table
            foreach (DataRowView datarow in dv)
            {
                row = new HtmlTableRow();
                //row.BgColor = "yellow";


                //loop for adding cells
                for (int j = 0; j &lt; columns; j++)
                {
                    cell = new HtmlTableCell();
                    if (j &lt; 4)
                    {
                        cell.InnerText = datarow[j].ToString();
                    }
                    else
                    {

                        CheckBox checkbox = new CheckBox();

                        int checkBoxColumns = dv.Table.Columns.Count - 5;
                        string fieldvalue = datarow[j].ToString();
                        string yes = fieldvalue.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries)[1];
                        string courseid = fieldvalue.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries)[0];
                        checkbox.ID = row.Cells[3].InnerText + "," + courseid.Trim();
                        checkbox.Checked = yes.Equals("Yes");
                        cell.Controls.Add(checkbox);

                    }

                    //add the cell to the current row
                    row.Cells.Add(cell);
                }

                //add the row to the table
                table.Rows.Add(row);
            }

            //add the table to the page
            PlaceHolder1.Controls.Add(table);

        }
    }
</code></pre>

<p>There is a different number of courses in each group but the coloring should be started from the fourth cell up to the last cell. I did many tries in the following part of the above code but I failed and I don't know why. <strong>So how to do that?</strong></p>

<pre><code>//for adding the headers to the table
            foreach (DataColumn column in dv.Table.Columns)
            {
                HtmlTableCell headerCell = new HtmlTableCell("th");
                headerCell.InnerText = column.Caption;

                //The following if-else statements are for checking the GroupID and give each group
                //a specific color
                if (group[0].ToString().Equals("1"))
                    headerCell.BgColor = "lightBlue";
                else if (group[0].ToString().Equals("2"))
                    headerCell.BgColor = "lightYellow";
                else if (group[0].ToString().Equals("3"))
                    headerCell.BgColor = "Orange";

                //the header cells to the header
                header.Cells.Add(headerCell);
            }
            table.Rows.Add(header);
</code></pre>
