C# winform datagridview中背景色问题

liujin9012 2012-03-19 03:30:03
datagridview当前绑定的数据中有一列是int类型,我想让这一列中所有值小于10的所对应的行的背景色变为红色,请问该如何实现
...全文
1108 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
开发者孙小聪 2012-03-24
  • 打赏
  • 举报
回复
databind 的时候 判断一下吧
qoushui 2012-03-23
  • 打赏
  • 举报
回复
第一:不要=,BASE 0
第二:VALUE 为空时,不能使用value.tostring(),
allen0118 2012-03-19
  • 打赏
  • 举报
回复
我草,这么邪门儿?怎么可能呢???
你看这张图片,我不知怎么样可以贴到这里,我放在空间里面。
http://hi.csdn.net/space-300592-do-album-picid-1087062.html

代码:
private void dgv_model_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{

if (e != null && e.RowIndex > -1)
{
DataGridViewRow dr = this.dgv_model.Rows[e.RowIndex];
string OldValue = dr.Cells[1].Value.ToString().Trim().ToUpper();

string NewValue = "COAT";
if (OldValue == NewValue)
{
dr.DefaultCellStyle.BackColor = Color.Red;
}
}


}
EnForGrass 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 liujin9012 的回复:]

引用 21 楼 chinajiyong 的回复:
引用 14 楼 liujin9012 的回复:

引用 12 楼 chinajiyong 的回复:
引用 11 楼 liujin9012 的回复:

for (int i = 0; i <=dgv_Stocks.Rows.Count; i++)
{
if (Convert.ToInt32(dgv_Stocks.Rows[i……
[/Quote]
设置一下 dataGridView1.ClearSelection();因为有数据的话第一个单元格默认选择。这个是取消掉默认选择
liujin9012 2012-03-19
  • 打赏
  • 举报
回复
非常感谢各位的热心帮助,谢谢大家!
liujin9012 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 chinajiyong 的回复:]
引用 14 楼 liujin9012 的回复:

引用 12 楼 chinajiyong 的回复:
引用 11 楼 liujin9012 的回复:

for (int i = 0; i <=dgv_Stocks.Rows.Count; i++)
{
if (Convert.ToInt32(dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToStr……
[/Quote]晕,一改果然好了。非常感谢
EnForGrass 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 liujin9012 的回复:]

引用 20 楼 chenpeng0118 的回复:
哦,我搞混了,不好意思,你要看看你那个“剩余数量”有没有?

我写个最简单的例子给你,你复制过去试试看:

private void DataGridView1_CellFormatting_1(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
if (……
[/Quote]
已经搞定了,首先把AllowUserToAddRows属性设置为false,

dataGridView1.ClearSelection();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (Convert.ToInt32(dataGridView1.Rows[i].Cells["column2"].Value.ToString()) < 10)
{

dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red;

}

}
liujin9012 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 chenpeng0118 的回复:]
哦,我搞混了,不好意思,你要看看你那个“剩余数量”有没有?

我写个最简单的例子给你,你复制过去试试看:

private void DataGridView1_CellFormatting_1(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
if (e != null &&am……
[/Quote]我把你给的索引值改了还是一样的。未将对象引用设置到对象的实例
EnForGrass 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 liujin9012 的回复:]

引用 12 楼 chinajiyong 的回复:
引用 11 楼 liujin9012 的回复:

for (int i = 0; i <=dgv_Stocks.Rows.Count; i++)
{
if (Convert.ToInt32(dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToString()) < 10)
dgv_Stock………
[/Quote]
首先把AllowUserToAddRows属性设置为false
再用下面代码

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (Convert.ToInt32(dataGridView1.Rows[i].Cells["剩余数量"].Value.ToString()) < 10)
dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
allen0118 2012-03-19
  • 打赏
  • 举报
回复
哦,我搞混了,不好意思,你要看看你那个“剩余数量”有没有?

我写个最简单的例子给你,你复制过去试试看:

private void DataGridView1_CellFormatting_1(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
if (e != null && e.RowIndex > -1)
{
DataGridViewRow dr = this.DataGridView1.Rows[e.RowIndex];
string dateStr = dr.Cells[6].Value.ToString();

string nowdata = DateTime.Now.ToString("yyyy年M月dd日");
if (dateStr == nowdata)
{
dr.DefaultCellStyle.BackColor = Color.Red;
}
}
}
catch (Exception ex)
{

MessageBox.Show(ex.Message);
}

}
liujin9012 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 chenpeng0118 的回复:]
那个 dgv_Stocks 是我程序里面的代码,你的程序里面也是这么命名的????????
[/Quote]这个一直都是我写的好吧。你最初给的是dgv1
allen0118 2012-03-19
  • 打赏
  • 举报
回复
那个 dgv_Stocks 是我程序里面的代码,你的程序里面也是这么命名的????????
liujin9012 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 chenpeng0118 的回复:]
这跟等号有什么关系?你前面那句话都没取到值,怎么等于?



dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToString()这句话我我这里写的,你要改为你那里的实际变量和参数,不要复制我的代码进去。
[/Quote] for (int i = 0; i < dgv_Stocks.Rows.Count; i++)改过了啊。i代表所有列
liujin9012 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 chenpeng0118 的回复:]
引用 11 楼 liujin9012 的回复:
for (int i = 0; i <=dgv_Stocks.Rows.Count; i++)
{
if (Convert.ToInt32(dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToString()) < 10)
dgv_Stocks.Rows[i].DefaultCellStyle.Bac……
[/Quote]这个没错。这是绑定代码
ocmd.CommandText = "select MaterielRegiser_Number as 货料编号,MaterielRegiser_Name as 货料名称,MaterielRegiser_Model as 规格型号,MaterielRegiser_Unit as 单位,MaterielRegiser_Total as 剩余数量 from MIS_MaterielRegiser";
DataSet ds = new DataSet();
oda = new OleDbDataAdapter(ocmd);

oda.Fill(ds);
this.dgv_Stocks.DataSource=ds.Tables[0];
allen0118 2012-03-19
  • 打赏
  • 举报
回复
这跟等号有什么关系?你前面那句话都没取到值,怎么等于?



dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToString()这句话我我这里写的,你要改为你那里的实际变量和参数,不要复制我的代码进去。
liujin9012 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 chinajiyong 的回复:]
引用 11 楼 liujin9012 的回复:

for (int i = 0; i <=dgv_Stocks.Rows.Count; i++)
{
if (Convert.ToInt32(dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToString()) < 10)
dgv_Stock……

不要等号,试试

C# code

……
[/Quote]不是等号的问题 试过了。
Convert.ToInt32(dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToString()) 未将对象引用设置到对象的实例
allen0118 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 liujin9012 的回复:]
for (int i = 0; i <=dgv_Stocks.Rows.Count; i++)
{
if (Convert.ToInt32(dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToString()) < 10)
dgv_Stocks.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
……
[/Quote]

那就是没取到值啊,你看看你的下标是多少?有没有剩余数量那一列,剩余数量是数据库查出来的字段,别搞错了。
EnForGrass 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 liujin9012 的回复:]

for (int i = 0; i <=dgv_Stocks.Rows.Count; i++)
{
if (Convert.ToInt32(dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToString()) < 10)
dgv_Stock……
[/Quote]
不要等号,试试

for (int i = 0; i <dgv_Stocks.Rows.Count; i++)
{
if (Convert.ToInt32(dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToString()) < 10)
dgv_Stocks.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
liujin9012 2012-03-19
  • 打赏
  • 举报
回复
for (int i = 0; i <=dgv_Stocks.Rows.Count; i++)
{
if (Convert.ToInt32(dgv_Stocks.Rows[i].Cells["剩余数量"].Value.ToString()) < 10)
dgv_Stocks.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
这样写也报错!未将对象引用设置到对象的实例。
liujin9012 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenpeng0118 的回复:]
for (int m = 0; m < dgv2.Rows.Count; m++)
{
if (dgv1.Rows[j].Cells["UserName"].Value.ToString().Contains("Allen"))
{
dgv1.Rows[j].DefaultCellStyle.BackColor = Color.Green;
}
}
[/Quote]这个有点看不懂!
加载更多回复(9)

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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