我正在尝试根据单元格的文本值来设置表格单元格的样式。这是在特定的字段上完成的,以引起用户的注意。这些表格单元格托管在一个formview中,带有一个asp:table对象的itemTemplate。单元格有一个ID,并设置为在服务器端运行,以便我可以从代码后获取它们。
我试图通过处理表格单元格的onDatabound、onPrerender、onLoad事件来钩入单个单元格。onPreRender在我的代码片段中使用,但结果在所有三个tablecell事件上都是相同的。在处理这些事件时,我总是有一个字符串。text属性为空,而不是实际值(即使在调用了数据绑定之后)。因为我没有实际的值,所以比较没有通过,颜色样式也没有按预期设置。
编辑:我还尝试处理我的formview的绑定事件来获得我的单元格值。
相关标记:
<asp:FormView ID="fvShipments" runat="server" DefaultMode="readonly">
<ItemTemplate>
<asp:Table ID="tblShipments" runat="server" GridLines="Both">
<asp:TableRow runat="server">
<asp:TableCell runat="server" ID="tbcCartonSizeOverride" CssClass="table-displayrow centerText" OnPreRender="tbcCartonSizeOverride_PreRender"><%#Eval("CartonSizeOverRide")%></asp:TableCell>
下面是
的相关代码Protected Sub tbcCartonSizeOverride_PreRender(sender As Object, e As EventArgs)
markAflag(CType(sender, TableCell))
End Sub
Private Sub markAflag(ByRef cell As TableCell)
If cell.Text.Trim.Length > 0 Then
cell.BackColor = Drawing.Color.Orange
Else
cell.BackColor = Drawing.Color.White
End If
End Sub
我不明白为什么这不起作用。除非我的Eval标记解决后preender事件?
感谢阅读。我不经常使用asp,所以可能我在这里有一些简单的困惑
Ok,我通过在我的formview对象上设置一些datakeys并在运行时做findcontrol调用来获取对页面上我的表的引用来解决这个问题。下面是一些示例代码,演示了我所做的工作。
Private Sub colorReturncode()
Dim schedreturncode As Integer
schedreturncode = FormView1.DataKey(1)
Dim qtable As New Table
qtable = CType(FormView1.FindControl("table1"), Table)
If schedreturncode = 0 Then
qtable.Rows(4).Cells(2).BackColor = System.Drawing.Color.Green
qtable.Rows(4).Cells(2).ForeColor = System.Drawing.Color.White
ElseIf schedreturncode = -1 Then
qtable.Rows(4).Cells(2).BackColor = System.Drawing.Color.White
Else
qtable.Rows(4).Cells(2).BackColor = System.Drawing.Color.Red
qtable.Rows(4).Cells(2).ForeColor = System.Drawing.Color.White
End If
End Sub