【问题标题】:How to set BackColor of a table cell dynamically with a database value?如何使用数据库值动态设置表格单元格的背景颜色?
【发布时间】:2010-07-23 15:45:05
【问题描述】:

作为对我目前正在进行的项目的奖励,如果我可以根据其值更改单个表格单元格的背景颜色,人们会喜欢它。因此,在我拥有的 RadGrid_ItemDataBound 事件处理程序中,如果单元格的文本等于数据库中数据集中的某个值,我将尝试设置单元格的 BackColor。我现在的代码是这样的:

            For i As Integer = 0 To ds2.Tables(0).Rows.Count - 1 Step 1
                If tc.Text = ds2.Tables(0).Rows(i)("LookupValue") Then
                    tc.BackColor = ds2.Tables(0).Rows(i)("Ref1")
                    Exit For
                End If
            Next

问题是在代码隐藏中设置颜色时,我显然必须将其设置为 System.Drawing.Color 的对象——我不能像在 CSS 中那样只为它提供一个字符串值。因此,在我上面发布的代码 sn-p 中,我的代码在 tc.BackColor = ds2.Tables(0).Rows(i)("Ref1") 上引发了运行时异常。我还发现我不能使用 CType 将字符串值更改为 System.Drawing.Color 的等效对象。

我想到了一个我可以使用的解决方案。我可以创建一个具有 Name 属性和 System.Drawing.Color 属性的自定义对象。我可以根据数据库中可用的所有颜色值实例化几个对象,然后将单元格文本与对象的 Name 属性进行比较,但是我担心这样做会占用大量资源(并且该应用程序的性能已经受到影响,因为它必须在 IE7 下运行)。

那么有没有人知道我可以用一种相对简单、非资源密集型的方式来完成我需要做的事情?

【问题讨论】:

    标签: css vb.net cell radgrid


    【解决方案1】:

    Color.FromName() 将您的数据库中的名称交给它。还有其他方法,如 FromRGB,但 FromName 听起来像你想要的。

    http://msdn.microsoft.com/en-us/library/system.drawing.color.fromname.aspx

    【讨论】:

    • 所以我根本不考虑查看 System.Drawing.Color 中的任何内容,这真是太愚蠢了。哦……今天是星期五。感谢您的帮助。 :-)
    • 有时你只需要另一双眼睛。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2012-06-06
    • 2019-10-21
    • 2015-06-02
    相关资源
    最近更新 更多