开发者

Dynamically changing a table cell background color in asp.net

I have the following table row on 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 cannot figure out the correct syntax to change the table cell back ground. My attempt is commented out.

How do I correctly declare the table cell? Findcontrol must not be the correct way.


Look this snipping of 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 doing this and controlling all statements you can render the table in web page.


You can do that in Codebehind with full control (untested, only to give you the 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 the 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>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜