通过gridview隐藏的一列的值,来设置该行的背景颜色。

例:通过客户类型改变gridview此行的背景颜色。

注:客户类型是隐藏的一列,但是读取出数据库的值了,数据源中有,根据这列的值设置该列背景颜色。

aspx:

<asp:TemplateField HeaderText="客户类型" Visible="False" ItemStyle-Wrap="false">                    

<ItemTemplate >                        

<%--<asp:Label ID="Label1" runat="server" Text='<%# Bind("khtype_name") %>'></asp:Label>--%>                        

<asp:Label ID="Label1" runat="server" Text='<%# Eval("khtype_name").ToString()=="---请选择---"?"":Eval("khtype_name").ToString() %>'></asp:Label>                    

</ItemTemplate>                    

<EditItemTemplate>                        

<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("khtype_name") %>'></asp:TextBox>                    

</EditItemTemplate>

<ItemStyle Wrap="False">

</ItemStyle>                

</asp:TemplateField>

(ItemStyle-Wrap="false"设置列表头不会自动换行。Text='<%# Eval("khtype_name").ToString()=="---请选择---"?"":Eval("khtype_name").ToString() %>'是设置

当页面上这一列显示的值为‘---请选择---’时,替换为“”空的,并且设置的时候是换成模板列。)

cs:

 //根据客户类型不同,gridview的行显示不同的颜色
    protected void gridKHInfo_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DataRowView drv = e.Row.DataItem as DataRowView;
            if (drv != null)
            {
                Label lbl = e.Row.FindControl("Label1") as Label;
                if (lbl.Text == "企业内训")
                {
                    e.Row.BackColor = Color.FromArgb(0x64C8C8FF);
                }
                if (lbl.Text == "公开课程")
                {
                    e.Row.BackColor = Color.FromName("lightyellow");
                }
                if (lbl.Text == "青少年营")
                {
                    e.Row.BackColor = Color.FromName("PowderBlue");
                }
            }
        }
    }

结果:客户类型为:企业内训,公开课程,青少年营时,各显示一种背景颜色。

原文地址:https://www.cnblogs.com/ljan/p/2779041.html