Gridview 绑定数据和颜色
Gridview bind data along with color
我正在从数据库中提取数据并将值放入一个对象中
public class Record
{
public string Status { get; set; }
public string Status_Color { get; set; }
}
状态字段将包含字符串状态,而状态颜色包含
十六进制颜色 (#ffffff)
现在我希望能够将此信息绑定到 gridview,我还希望根据字符串的十六进制值设置 Status_Color。
将状态绑定到 gridview 没有问题。我正在做这样的事情...
<asp:Gridview runat="server" id="grid">
<Columns>
<asp:BoundField HeaderText="Status" DataField="Status"/>
</Columns>
</Gridview>
这可以正确找到状态,但是我不确定如何将 status_color 绑定到此单元格?
我会绑定 onrowdatabind 事件吗?有更好的方法吗?
您需要将 属性 的 hex
值绑定到 BackColor
值,如下所示:
BackColor= '<%# System.Drawing.ColorTranslator.FromHtml(Eval("Status_Color").ToString())%>'
你没有提到哪种颜色所以如果你想要前景颜色然后使用 ForeColor
属性:
ForeColor= '<%# System.Drawing.ColorTranslator.FromHtml(Eval("Status_Color").ToString())%>'
对于这种方法,您应该使用 ItemTemplate
作为:
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label runat="server" ID="lblStatus" Text='<%# Eval("Status") %>' ForeColor= '<%# System.Drawing.ColorTranslator.FromHtml(Eval("Status_Color").ToString())%>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
您也可以尝试创建新的 属性 并在那里设置值,然后在此处进行设置:
public string StatusToShow
{
get
{
return string.Concat("<span style='color:"+Status_Color+"; font-weight:bold'>" Status "</span>");
}
}
要使此方法起作用,您需要设置 HtmlEncode=False
:
<asp:BoundField HeaderText="Status" DataField="Status" HtmlEncode="False"/>
第三种方法是在 OnRowBound
事件中,您可以获取控件,然后在后面的代码中设置颜色,如:
Status.ForeColor = System.Drawing.ColorTranslator.FromHtml(status_color);
我正在从数据库中提取数据并将值放入一个对象中
public class Record
{
public string Status { get; set; }
public string Status_Color { get; set; }
}
状态字段将包含字符串状态,而状态颜色包含 十六进制颜色 (#ffffff)
现在我希望能够将此信息绑定到 gridview,我还希望根据字符串的十六进制值设置 Status_Color。 将状态绑定到 gridview 没有问题。我正在做这样的事情...
<asp:Gridview runat="server" id="grid">
<Columns>
<asp:BoundField HeaderText="Status" DataField="Status"/>
</Columns>
</Gridview>
这可以正确找到状态,但是我不确定如何将 status_color 绑定到此单元格?
我会绑定 onrowdatabind 事件吗?有更好的方法吗?
您需要将 属性 的 hex
值绑定到 BackColor
值,如下所示:
BackColor= '<%# System.Drawing.ColorTranslator.FromHtml(Eval("Status_Color").ToString())%>'
你没有提到哪种颜色所以如果你想要前景颜色然后使用 ForeColor
属性:
ForeColor= '<%# System.Drawing.ColorTranslator.FromHtml(Eval("Status_Color").ToString())%>'
对于这种方法,您应该使用 ItemTemplate
作为:
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label runat="server" ID="lblStatus" Text='<%# Eval("Status") %>' ForeColor= '<%# System.Drawing.ColorTranslator.FromHtml(Eval("Status_Color").ToString())%>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
您也可以尝试创建新的 属性 并在那里设置值,然后在此处进行设置:
public string StatusToShow
{
get
{
return string.Concat("<span style='color:"+Status_Color+"; font-weight:bold'>" Status "</span>");
}
}
要使此方法起作用,您需要设置 HtmlEncode=False
:
<asp:BoundField HeaderText="Status" DataField="Status" HtmlEncode="False"/>
第三种方法是在 OnRowBound
事件中,您可以获取控件,然后在后面的代码中设置颜色,如:
Status.ForeColor = System.Drawing.ColorTranslator.FromHtml(status_color);