日期:2014-05-17  浏览次数:20517 次

ASP.NET C#怎么可以将Gridview中的具有链接字段的值能够根据其它列字段值不同而颜色也做相应的改变?
这是我的Gridview中的一个链接字段列。
  <asp:HyperLinkField DataNavigateUrlFields="id" ControlStyle-ForeColor="blue"
  DataNavigateUrlFormatString='viewdetails.aspx?id={0}' DataTextField="title" 
  HeaderText="主题" Target="_blank">
  </asp:HyperLinkField>

但是我其它有一列是“状态”列的值不同。当状态="Yes"时,则要求此链接字段列的值颜色变为绿色, 而当状态="No"时,则要求此链接字段列的值文字颜色变为红色,
请教怎么做才好呢? 谢谢!

------解决方案--------------------
你可以在绑定事件里面进行处理,或者使用模板列
<a href="" style='color:<%#Eval("状态字段").ToString()=="Yes"?"green":"red"%>'
------解决方案--------------------
给你简单写了一个! 是不是这个意思??
C# code

//改变gridview 列的颜色
public void Particular()
{
for (int i = 0; i < this.grv_PD.Rows.Count;i++)
{
string st=Convert.ToString(this.grv_PD.Rows[i].Cells[13].Text);//需要判断的列
if (st =="Yes")
{
grv_PD.Rows[i].Cells[15].BackColor = System.Drawing.Color.Yellow;//需要改变颜色的列
}
else
{
..
...
}
}
}

------解决方案--------------------
那就写一个函数,可以处理N种情况

<a href='viewdetails.aspx?id=<%#Eval("id")%>' Target="_blank" style='color:<%# GetColor(Eval("状态字段").ToString())%>'><%#Eval("title")%></A>

public String GetColor(String s)
{
 if(s=="Yes") return "green";
 else if(s=="No") return "red";
 else
 return "#000000";
}