Dynamically changing the background color of a table cell in asp.net

I have the following table row in my .aspx page:

<tr> <td valign="bottom" style="width: 157px">Initial Requirements:&nbsp;&nbsp;&nbsp;&nbsp;</td> <asp:Repeater ID="Repeater11" runat="server" DataSourceID="ObjectDataSource1"> <ItemTemplate> <td valign="bottom" id="ReqStatus" runat="server" style="background-color: Gray"> <%#ReqStatus(CType(CType(Container.DataItem, System.Data.DataRowView).Row, DataSet1.DataTable1Row))%> </td> </ItemTemplate> </asp:Repeater> </tr> 

In the code behind, I have this function:

 Protected Function ReqStatus(ByVal Project As DataSet1.DataTable1Row) As String 'Dim ReqTableCell As TableCell 'ReqTableCell = form1.FindControl("ReqStatus") ' Check the status of the Development Completed Dim rightNow As Date = Now() Dim dateDifference As TimeSpan If Not Project.IsNull("Requirements_Target") Then Dim ReqTargetDate As Date = Project.Requirements_Target If Project.IsNull("Req_Date") Then dateDifference = ReqTargetDate.Subtract(rightNow) If dateDifference.Days > 0 Then If dateDifference.Days >= 60 Then 'ReqTableCell.BackColor = Drawing.Color.Green Return "<strong><font color='green'>" & dateDifference.Days & "</font></strong>" ElseIf dateDifference.Days > 30 And dateDifference.Days < 60 Then 'ReqTableCell.BackColor = Drawing.Color.Yellow Return "<strong><font color='yellow'>" & dateDifference.Days & "</font></strong>" Else 'ReqTableCell.BackColor = Drawing.Color.Red Return "<strong><font color='red'>" & dateDifference.Days & "</font></strong>" End If Else 'ReqTableCell.BackColor = Drawing.Color.Red Dim pastDue As Int16 = (dateDifference.Days * -1) Return "<strong><font color='red'>" & pastDue & "</font></strong> days past" End If End If Else End If End Function 

I can change the color of the return value based on conditional statements, but I can’t determine the correct syntax for changing the table cell database. My attempt is commented out.

How to declare a table cell? Findcontrol should not be the right way.

+4
source share
2 answers

You can do this in Codebehind with full control (untested, only to give you an idea):

 Private Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound Select Case e.Item.ItemType Case ListItemType.Item Dim Project As DataSet1.DataTable1Row = DirectCast(DirectCast(e.Item.DataItem, System.Data.DataRowView).Row, DataSet1.DataTable1Row) Dim tdReqStatus As HtmlTableCell = DirectCast(e.Item.FindControl("tdReqStatus"), HtmlTableCell) Dim lblReqStatus As Label = DirectCast(e.Item.FindControl("lblReqStatus"), Label) ' Check the status of the Development Completed Dim rightNow As Date = Now() Dim dateDifference As TimeSpan If Not Project.IsNull("Requirements_Target") Then Dim ReqTargetDate As Date = Project.Requirements_Target If Project.IsNull("Req_Date") Then dateDifference = ReqTargetDate.Subtract(rightNow) lblReqStatus.Font.Bold = True If dateDifference.Days > 0 Then If dateDifference.Days >= 60 Then tdReqStatus.BgColor = "Green" lblReqStatus.Text = dateDifference.Days.ToString ElseIf dateDifference.Days > 30 And dateDifference.Days < 60 Then tdReqStatus.BgColor = "Yellow" lblReqStatus.Text = dateDifference.Days.ToString Else tdReqStatus.BgColor = "Red" lblReqStatus.Text = dateDifference.Days.ToString End If Else tdReqStatus.BgColor = "Red" lblReqStatus.Text = (dateDifference.Days * -1).ToString End If End If End If End Select End Sub 

and on aspx:

  <table> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <tr> <td valign="bottom" id="TdReqStatus" runat="server" > <asp:label ID="lblReqStatus" runat="server" ></asp:label> </td> </tr> </ItemTemplate> </asp:Repeater> </table> 
+1
source

Look at this disabling my solution:

 TableRow tr = new TableRow(); TableCell tc = new TableCell { Text = "someText"}; tc.BackColor = ColorTranslator.FromHtml("#0000FF"); tc.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); tc.Font.Bold = true; tc.Font.Size = 16; tr.Cells.Add(tc); table.Rows.Add(tr); 

After that and managing all the operators, you can display the table on the web page.

+1
source

All Articles