动态更改asp.net中的表格单元格背景颜色

时间:2010-10-25 20:00:10

标签: asp.net vb.net

我的.aspx页面上有以下表格行:

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

在后面的代码中我有这个功能:

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

我可以根据条件语句更改返回值的颜色,但无法找出更改表格单元格背景的正确语法。我的尝试被注释掉了。

如何正确声明表格单元格? Findcontrol一定不是正确的方法。

2 个答案:

答案 0 :(得分:1)

你可以在完全控制的Code Behind中做到这一点(未经测试,只是为了给你一个想法):

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

并在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 :(得分:1)

看看我的解决方案:

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);

执行此操作并控制所有语句后,您可以在网页中呈现该表。