【发布时间】:2014-02-17 04:03:59
【问题描述】:
我在 DataGrid 控件中有超链接
我想要做的是我需要动态改变超链接的颜色(根据条件)
类似
如果状态 = 登录,则用户名颜色应为绿色,如果状态 = 退出,则用户名颜色应为红色。
我已尝试关注,但无法获得第一列或文本。
同样,我可以申请除第一个列之外的其余列(用于超链接)。
请帮帮我。
【问题讨论】:
我在 DataGrid 控件中有超链接
我想要做的是我需要动态改变超链接的颜色(根据条件)
类似
如果状态 = 登录,则用户名颜色应为绿色,如果状态 = 退出,则用户名颜色应为红色。
我已尝试关注,但无法获得第一列或文本。
同样,我可以申请除第一个列之外的其余列(用于超链接)。
请帮帮我。
【问题讨论】:
你需要在这里纠正两件事:
细胞索引从 0 开始。你应该有rv.Row.ItemArray[2]
的rv.Row.ItemArray[3]。
单元格指的是<td>,而不是<a>标签。
我会用这样的代码切换<td> 的类:
protected void dgBoundItems(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView rv = (DataRowView)e.Item.DataItem;
if (rv.Row.ItemArray[2].ToString() == "Sign In")
{
e.Item.Cells[0].Attributes.Add("class", "signin");
}
else
{
e.Item.Cells[0].Attributes.Add("class", "signout");
}
}
}
在我的页面中,我添加了这样的 css 类(在页面头部):
<head runat="server">
<title></title>
<style>
.signout a:link {
font-weight:normal;
color:red;
}
.signin a:link {
font-weight:bold;
color:green;
}
</style>
</head>
它的外观是这样的:
【讨论】:
您可以执行以下操作:
if (YourConditionOverHere){
e.Item.Cells[0].CssClass = HyperLink1.CssClass = "CssStyle2";
else
e.Item.Cells[0].CssClass = HyperLink1.CssClass = "CssStyle1";
//Or you can use
//e.Item.Cells[0].BorderColor = System.Drawing.Color.Black;
//Or
//e.Item.Cells[0].Color.FromArgb(0x0000aaaa);
}
【讨论】: