Asp.net Telerik radgrid行颜色问题

Asp.net Telerik radgrid行颜色问题,asp.net,vb.net,telerik,Asp.net,Vb.net,Telerik,在我的代码中,我有一个子代码来处理根据sqlserver中名为“backorder”的列的内容更改行颜色。 当我测试它是真还是1时,它会执行主“if”代码两次,这对于我的数据表是正确的。2行显示为延期交货=真。但是,栅格仍保持正常颜色。如果我取消对else代码块的注释,无论内容如何,该列中的所有单元格都是橙色的,并且执行仍然通过主“If”两次。我被这种行为弄糊涂了。如果是CSS干扰,为什么会让橙色起作用?我已经尝试了十几种不同的代码,所有的海报都说这些代码应该有效 请帮忙!我花了一天的大部分时间

在我的代码中,我有一个子代码来处理根据sqlserver中名为“backorder”的列的内容更改行颜色。 当我测试它是真还是1时,它会执行主“if”代码两次,这对于我的数据表是正确的。2行显示为延期交货=真。但是,栅格仍保持正常颜色。如果我取消对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

这可能与您正在进行的布尔运算有关。你已经解释了“真”和“1”,但还有其他的:“真”和-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对象处理字符串中包含的语句的“真实性”的繁重工作。

您的问题是
item(“backorder”)
返回类型为
TableCell
的对象,而不是一行。因此,在设置
item(“backorder”).BackColor=System.Drawing.Color.Red
时,您设置的是列backorder的BackColor中的单元格,而不是整行BackColor。如果列backorder不可见,则不会看到任何更改

请尝试以下代码:

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
设置背景色来设置整行背景色

在下面的帖子中查看Shinu的答案

在调试中,它将“True”显示为文本,但它正在查找它们并将该代码块传递两次!对于每件延期订购但颜色不变的物品,只需一次!然而,我将尝试转换为bool.Duh,“一切都变成橙色”的情况是一个不同的问题。然而,它通过if作为“真”,尝试将其涂成红色是不起作用的。。。“else”块是诊断性地放入的。。。