基于值的颜色样式表格



我正在尝试根据单元格的文本值来设置表格单元格的样式。这是在特定的字段上完成的,以引起用户的注意。这些表格单元格托管在一个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

最新更新