views:

36

answers:

1

I have the following table row on my .aspx page.

Initial Requirements:    

        <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.

A: 

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>
Tim Schmelter