使用VALUE AS单元格颜色

时间:2013-01-30 01:20:16

标签: c# asp.net vb.net gridview colors

好的,我在发布之前尽可能多地研究了这个,所以我希望这不是转发但是这里...

我做了一个数据表,让我们说它有一个名为“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],因为当我添加列时,它将改变单元格号,并切换所有内容!我希望通过将颜色与数据绑定来使其更清洁。

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>