例:通过客户类型改变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");
}
}
}
}
结果:客户类型为:企业内训,公开课程,青少年营时,各显示一种背景颜色。