代码之家  ›  专栏  ›  技术社区  ›  Mark Clark

Telerik radgrid行颜色问题

  •  0
  • Mark Clark  · 技术社区  · 8 年前

    在我的代码中,我有一个子代码来处理根据sqlserver中名为“backorder”的列的内容更改行颜色。 当我测试它是True还是1时,它会执行两次主“if”代码,这对于我的数据表来说是正确的。2行显示为延期交货=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 回复  |  直到 8 年前
        1
  •  0
  •   mike100111    8 年前

    你的问题是 item("backorder") 返回类型为的对象 TableCell ,不是一行。因此,设置时 item("backorder").BackColor = System.Drawing.Color.Red

    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的答案。 Telerik Forum Post

        2
  •  0
  •   Ed Mooers    8 年前

    这可能与您正在进行的布尔计算有关。你已经解释了“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对象处理字符串中包含的语句的“真实性”的繁重任务。