Telerik radgrid行颜色问题

时间:2017-06-26 19:57:26

标签: asp.net vb.net telerik

在我的代码中,我有这个子来处理更改的行颜色,这取决于名为“backorder”的列的内容,这是在sqlserver中的位。 当我测试它是True还是1时,它执行两次主“IF”代码,这对我的数据表是正确的。 2行显示为backorder = True。然而,网格仍然是正常颜色。如果我取消注释else代码块,那么无论内容如何,​​该列中的所有单元格都是橙色,执行仍然通过主“IF”两次。我对这种行为感到很困惑。如果它是CSS干扰,为什么它会让橙色的颜色工作?我已经尝试了十几种代码,所有海报都说这些代码应该有用......

请帮忙!我花了大部分时间试图解开这个!

Protected Sub RadGrid1_ItemDataBound(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound
    If TypeOf e.Item Is GridDataItem Then
        Dim item As GridDataItem = DirectCast(e.Item, GridDataItem)
        If item("backorder").Text = "True" Or item("backorder").Text = "1" Then
            item("backorder").BackColor = System.Drawing.Color.Red
        Else
            'item("backorder").BackColor = System.Drawing.Color.Orange
        End If
    End If

End Sub

2 个答案:

答案 0 :(得分:0)

它可能与您正在进行的布尔评估有关。你已经占了" True"和1,但还有其他:" true"和-1立即浮现在脑海中。您可以尝试这样做:

Protected Sub RadGrid1_ItemDataBound(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound
    If TypeOf e.Item Is GridDataItem Then
        Dim item As GridDataItem = DirectCast(e.Item, GridDataItem)
        If  Convert.ToBoolean(item("backorder").Text) = True Then
            item("backorder").BackColor = System.Drawing.Color.Red
        Else
            item("backorder").BackColor = System.Drawing.Color.Orange
        End If
    End If
End Sub

这样,你就可以让内置的Convert对象处理繁重的事情"真实性"包含在字符串中的语句。

答案 1 :(得分:0)

您的问题是item("backorder")返回TableCell类型的对象,而不是一行。因此,在设置item("backorder").BackColor = System.Drawing.Color.Red时,您要设置列延期交货的BackColor中的单元格,而不是整行反色。如果无法看到Column延期交货,您将看不到任何更改。

请尝试以下代码:

Protected Sub RadGrid1_ItemDataBound(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound
If TypeOf e.Item Is GridDataItem Then
     Dim item As GridDataItem = DirectCast(e.Item, GridDataItem)
     If item("backorder").Text = "True" Or item("backorder").Text = "1" Then
         item.BackColor = Drawing.Color.Red
     Else
         item.BackColor = System.Drawing.Color.Orange
     End If
End If
End Sub

这样做是检查列' backorder',然后通过为GridDataItem设置BackColor来设置整个行BackColor。

在以下文章中查看Shinu的答案。 Telerik Forum Post