ASP.NET C#怎么可以将Gridview中的具有链接字段的值能够根据其它列字段值不同而颜色也做相应的改变?

于之 2012-05-24 09:34:22
这是我的Gridview中的一个链接字段列。
<asp:HyperLinkField DataNavigateUrlFields="id" ControlStyle-ForeColor="blue"
DataNavigateUrlFormatString='viewdetails.aspx?id={0}' DataTextField="title"
HeaderText="主题" Target="_blank">
</asp:HyperLinkField>

但是我其它有一列是“状态”列的值不同。当状态="Yes"时,则要求此链接字段列的值颜色变为绿色, 而当状态="No"时,则要求此链接字段列的值文字颜色变为红色,
请教怎么做才好呢? 谢谢!
...全文
177 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
于之 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
链接字段列也是可以的,只是你没有使用好

例子

HTML code
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script ……
[/Quote]

这种方法也准备明天来试试,明天再结贴哦。敬谅!
于之 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
那就写一个函数,可以处理N种情况

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

public String GetColor(String s)
{
……
[/Quote]

太厉害了!!! 老大果然厉害!搞定了,太谢谢了!
孟子E章 2012-05-24
  • 打赏
  • 举报
回复
链接字段列也是可以的,只是你没有使用好

例子
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">


protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
String[] testData = { "Yes","No",""};
System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");
System.Data.DataRow dr;
dataTable1.Columns.Add(new System.Data.DataColumn("Id", typeof(System.Int32)));
dataTable1.Columns.Add(new System.Data.DataColumn("Title", typeof(System.String)));
dataTable1.Columns.Add(new System.Data.DataColumn("State", typeof(System.String)));
for (int i = 0; i < 8; i++)
{
dr = dataTable1.NewRow();
dr[0] = i;
dr[1] = "【孟子E章】" + i.ToString();
dr[2] = testData[i % 3 ];
dataTable1.Rows.Add(dr);
}
GridView1.DataSource = dataTable1;
GridView1.DataBind();
}
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink h = e.Row.Cells[0].Controls[0] as HyperLink;
String State = DataBinder.Eval(e.Row.DataItem, "State").ToString();
if (State == "Yes") h.Style.Add("color", "green");
else if (State == "No") h.Style.Add("color", "red");
else
h.Style.Add("color", "yellow");
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" AutoGenerateColumns="false">
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="id" DataNavigateUrlFormatString="xx.aspx?id={0}"
DataTextField="Title" />
</Columns>
</asp:GridView>
</form>
</body>
</html>
孟子E章 2012-05-24
  • 打赏
  • 举报
回复
那就写一个函数,可以处理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";
}
于之 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
使用GridView的RowDataBound事件
[/Quote]

如果我的不是链接字段值,我是可以搞定的。,问题的关键关键是一个链接字段列!!! 它不听 RodDataRound中的颜色设置使唤的。愁死人了~~~
蛤十一 2012-05-24
  • 打赏
  • 举报
回复
使用GridView的RowDataBound事件
wosizy 2012-05-24
  • 打赏
  • 举报
回复
这个是后台自己随便写的一个方法!
根据你自己的需求 可以在页面一加载就调用!
于之 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
<asp:HyperLinkField DataNavigateUrlFields="id" ControlStyle-ForeColor="blue"
DataNavigateUrlFormatString='viewdetails.aspx?id={0}' DataTextField="title"
HeaderText="主题" Target="_blank">
</a……
[/Quote]

老大,假如我的条件有三个判断,乍办?
于之 2012-05-24
  • 打赏
  • 举报
回复
好的,我试试,谢谢先
孟子E章 2012-05-24
  • 打赏
  • 举报
回复
<asp:HyperLinkField DataNavigateUrlFields="id" ControlStyle-ForeColor="blue"
DataNavigateUrlFormatString='viewdetails.aspx?id={0}' DataTextField="title"
HeaderText="主题" Target="_blank">
</asp:HyperLinkField>

改成
<asp:TemplateField HeaderText="主题">
<ItemTemplate>
<a href='viewdetails.aspx?id=<%#Eval("id")%>' Target="_blank" style='color:<%#Eval("状态字段").ToString()=="Yes"?"green":"red"%>'><%#Eval("title")%></A>
</ItemTemplate>
</asp:TemplateField>
于之 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
给你简单写了一个! 是不是这个意思??

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);//需……
[/Quote]

请教,这个Particular 如何被调用,在哪个地方写? 望指点,谢谢!
于之 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你可以在绑定事件里面进行处理,或者使用模板列
<a href="" style='color:<%#Eval("状态字段").ToString()=="Yes"?"green":"red"%>'
[/Quote]

我没有用<a href =...> 请问我:
<asp:HyperLinkField DataNavigateUrlFields="id" ControlStyle-ForeColor="blue"
DataNavigateUrlFormatString='viewdetails.aspx?id={0}' DataTextField="title"
HeaderText="主题" Target="_blank">
</asp:HyperLinkField>

在这里应如何改呢? 请再指点,谢谢!
wosizy 2012-05-24
  • 打赏
  • 举报
回复
给你简单写了一个! 是不是这个意思??

//改变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
{
..
...
}
}
}
孟子E章 2012-05-24
  • 打赏
  • 举报
回复
你可以在绑定事件里面进行处理,或者使用模板列
<a href="" style='color:<%#Eval("状态字段").ToString()=="Yes"?"green":"red"%>'

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧