一、目标:
增加“行政处罚下达时间”,“送法院时间”改为“距送法院天数”( “距送法院天数”为当前时间减去“行政处罚下达时间“,随着时间改变,自动改变),如果“距送法院天数”在3个月内,字体为黄色,超过3个月,字体为红色。
二、方法:
a.SqlServer中使用计算列
b.winform中改变DataGridView中符合条件的字体的颜色和列的颜色。
三、行动:
a.SqlServer中计算列详解
1.谷歌答案
计算列区别于需要我们手动或者程序给予赋值的列,它的值来源于该表中其它列的计算值。比如,一个表中包含有数量列Number与单价列Price,我们就可以创建计算列金额Amount来表示数量*单价的结果值,创建Amount列后,在程序中需要使用计算金额这个值时,就不用取出Number列与Price列的值后相乘,而是直接取Amount列的值就可以了。
注意:
1,计算列如果没有设置为"是持久的",那么它是不可以用来做check,foreign key或not null约束。当然,如果我们在microsoft sql server management studio为计算列设置了check等约束了,sql server会自动将该列设置为"是持久的"。
2,计算列不可以再次用来作为中一个计算列的一部分。
3,在触发器,不可以对计算列进行update判断,否则会报如下错误:
列‘‘不能在IF UPDATE子句中使用,因为它是计算列。
2.个人答案
b.winform中改变DataGridView中符合条件的字体的颜色和列的颜色。
1.谷歌答案
只需要使用DataGridView的CellPainting事件。代码如下:
效果图:
private void dataGridView2_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.RowIndex < 0) return; DataGridViewRow dgr = dataGridView2.Rows[e.RowIndex]; try { if (e.ColumnIndex == 25)//定位到第3列,如不定位到具体的哪列,则整行的颜色改变 { if (Convert.ToInt32( dgr.Cells["SFYSJ"].Value) > 90)//dgr.Cells["Column4"]为需要判断的列Name,而不是HeadText { e.CellStyle.ForeColor = Color.Red;//将前景色设置为红色,即字体颜色设置为红色 //e.CellStyle.BackColor = Color.Green;//将背景色设置为绿色,即列的颜色设置为红色 } else if (Convert.ToInt32(dgr.Cells["SFYSJ"].Value) < 90) { e.CellStyle.ForeColor = Color.Yellow; } } } catch { } }
SqlServer中计算列详解和winform中改变DataGridView中符合条件的字体的颜色和列的颜色,布布扣,bubuko.com
SqlServer中计算列详解和winform中改变DataGridView中符合条件的字体的颜色和列的颜色
原文:http://blog.csdn.net/xyl295528322/article/details/23833901