好的,我在发布之前尽可能多地研究了这个,所以我希望这不是转发但是这里...
我做了一个数据表,让我们说它有一个名为“cartype”的库,然后我添加了一个名为“color”的列
好吧,我绑定了一个gridview,我想要做的是使用一个标签,并将其FORECOLOR设为“颜色”列中的VALUE。
我试过了:
<asp:BoundField DataField="cartype" HeaderText="Cars" ItemStyle-Width="130" ItemStyle-ForeColor='<% Eval("Color") %>' />
但是我收到了关于
的错误“无法从字符串表示形式'&lt;%Eval(”color“)%&gt;'创建System.drawing.color类型的对象对于'ForeColor'属性。
我也尝试添加模板字段并获得相同的结果。
我试图不使用rowdatabound事件并使用.Cells [3],因为当我添加列时,它将改变单元格号,并切换所有内容!我希望通过将颜色与数据绑定来使其更清洁。
答案 0 :(得分:1)
你试过了吗?
ForeColor='<%# System.Drawing.Color.FromName(Eval("Color")) %>'
答案 1 :(得分:1)
好的,我最终这样做了。伤心:(
在网格的非常结束处,我添加了一个ASP:隐藏模板字段
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField ID="hColor" runat="server" Value='<%# Eval("Color") %>'/>
</ItemTemplate>
</asp:TemplateField>
然后在RowDataBoundEvent中我做了这个
Dim hid As HiddenField
hid = e.Row.FindControl("hColor")
If (hid.Value <> Nothing) Then
e.Row.Cells(1).ForeColor = System.Drawing.ColorTranslator.FromHtml("#" + hid.Value)
End If
PS。我心里的C#。不喜欢VB.NET。哈哈:)
答案 2 :(得分:0)
错误的原因是运行时期望ForeColor的值是颜色,而不是字符串。运行时无法从字符串“Red”创建“Red”。
您可以使用以下示例在代码后面创建一个函数来解决您的问题..函数将接受字符串颜色值并返回系统颜色。在填充gridview之前,您可以将颜色列存储在arraylist中,并使用该arraylist返回系统颜色。不是最好的方式,但不能想到其他任何事情。
ForeColor='<%# Convert.ToString(Eval("Color")) == "Blue" ? System.Drawing.Blue>