我的.aspx页面上有以下表格行:
<tr>
<td valign="bottom" style="width: 157px">Initial Requirements: </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一定不是正确的方法.
最佳答案 你可以在完全控制的Codebehind中做到这一点(未经测试,只是为了给你这个想法):
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>