| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1074 人关注过本帖
标题:求助:datagrid中把值大于3的单元格设成红色,小于三的单元格设成绿色,怎么 ...
只看楼主 加入收藏
centaur
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-2-1
收藏
 问题点数:0 回复次数:6 
求助:datagrid中把值大于3的单元格设成红色,小于三的单元格设成绿色,怎么处理?
现在我在后台程序里添加了datagrid的ItemDataBound事件,并在此事件中添加了下面几行代码:

private void dgdstore_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{

if(e.Item.ItemIndex>3)
{
e.Item.BackColor=Color.Red;
}
else
{
e.Item.BackColor=Color.Green;
}
}

运行的结果是那一行都是相同颜色,现在我要的是,每个单元格可以对应条件取得相应的颜色。(我的第一行是日期:如15日,第一列是时间:如19時,其他的行列都是数字)。 拜托各位了,救救我。
搜索更多相关主题的帖子: datagrid 单元 Item 绿色 Green 
2007-04-09 14:54
centaur
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-2-1
收藏
得分:0 
怎么就没人帮帮初学的人呢?求救啊!
2007-04-09 17:05
xiezili
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2007-4-8
收藏
得分:0 
你的问题描述不太清楚:
一:“值大于3”是哪个值大于3?
二:“第一行是日期:如15日,第一列是时间:如19時”,那么你的第一行第一列是什么?

http://xiezili.
2007-04-09 17:41
centaur
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-2-1
收藏
得分:0 

对不起,我没有说很清楚。
一:值大于3的值是指datagrid的单元格的里的值,如:Convert.ToInt32(dgdstore.Items[1].Cells[1].Text)=3
二:我的第一行的第二列开始全是日期:如15日,第一列的第二行开始全是时间:如19時。第一行第一列为空。其他的单元格都是数字。

现在我在Page_Load中写了这样一段代码,前面的datagrid数据绑定没有任何问题。

for(int i=1;i<=this.dgdstore.Items.Count;i++)
{
for(int j=0;j<=Convert.ToInt32(this.DataGrid1.Items[i].Cells.Count);j++)
{
if(Convert.ToInt32(this.dgdstore.Items[i].Cells[j].Text)>3)
{
this.dgdstore.Items[i].Cells[j].BackColor=System.Drawing.Color.Red;
}
else
{
this.dgdstore.Items[i].Cells[j].BackColor=System.Drawing.Color.Pink;
}
}
}

结果是说:被指定的引数,超出了有效范围。

2007-04-10 12:51
centaur
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-2-1
收藏
得分:0 
for(int j=0;j<=Convert.ToInt32(this.DataGrid1.Items[i].Cells.Count);j++)
这里的j应该从1开始,但是也是报同样的错。
2007-04-10 12:59
xiezili
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2007-4-8
收藏
得分:0 
你的DateGrid中是否用了模版列,如果用的是绑定列,以上的代码应该是没问题的。如果用了模版列就得用FindContro才能得到列值。如果是超链接列也不能用this.DataGrid1.Items[i].Cells[j].text得到值的!

http://xiezili.
2007-04-10 17:55
centaur
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-2-1
收藏
得分:0 
谢谢楼上的,经过多次修改,调试已经成功了。我把代码贴出来与有相同问题的人共享一下,或许以后又用。
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
for(int j=0;j<=e.Item.Cells.Count-1;j++)
{
this.TextBox1.Text=e.Item.Cells[j].Text.ToString();
int aa;
try
{
aa=System.Convert.ToInt32(this.TextBox1.Text);
}
catch
{
continue;
}
if(aa==6)
{
e.Item.Cells[j].BackColor=Color.Empty;
}
else
{
if(Convert.ToInt32(e.Item.Cells[j].Text)>6)
{
e.Item.Cells[j].BackColor=Color.Pink;
}
else if(Convert.ToInt32(e.Item.Cells[j].Text)<6)
{
e.Item.Cells[j].BackColor=Color.PaleGreen;
}
}
}
}
2007-04-10 18:36
快速回复:求助:datagrid中把值大于3的单元格设成红色,小于三的单元格设成绿色 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015646 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved