繁体   English   中英

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM