在我的代码中,我有这个子来处理更改的行颜色,这取决于名为“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
答案 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