VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1641|回复: 13

如何实现datagridview行的颜色

[复制链接]

3

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-2-11 21:00:02 | 显示全部楼层 |阅读模式

表内字段

状态
0
1

如何能让状态为0的行显示蓝色,为1的显示红色
回复

使用道具 举报

0

主题

17

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-4-8 08:30:01 | 显示全部楼层
如果使用了数据绑定,可以触发datagridview的RowDataBound事件
protected void GridViewTransportPapers_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            int i = e.Row.DataItem as int;//这个根据自己的情况而定
            if(i == null)
            {
                return;
            }
            if(i == 0)
            {
                e.Row.BackColor = Color.Red;
            }
            else
            {
                e.Row.BackColor = Color.Blue;
            }
        }
    }
回复

使用道具 举报

0

主题

27

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-4-8 14:00:01 | 显示全部楼层
重写datagird的onpaint函数,而且要使用dataGridTableStyle.大致如下
public class DataGridColoredTextBoxColumn : DataGridTextBoxColumn
                {
                        public DataView dv = null;

                        protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight)
                        {
                                try
                                {
                                        switch( dv[rowNum].Row[3].ToString() )
                                        {
                                                case "critical" : backBrush = Brushes.Red; break;
                                                case "major" : backBrush = Brushes.Red; break;
                                                case "minor" : backBrush = Brushes.Orange; break;
                                                case "warning" : backBrush = Brushes.Orange; break;
                                                default : break;
                                        }
                                }
                                catch( Exception ex )
                                {
                                        MessageBox.Show( ex.Message );
                                }
                                finally
                                {
                                        base.Paint (g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
                                }
                        }
                }
用这个类代替DataGridTextBoxColumn来定义变量:如下
private DataGridColoredTextBoxColumn IDColumn;
就可以了。

回复

使用道具 举报

0

主题

17

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-4-8 19:30:01 | 显示全部楼层
。。。。。。我错了,我的是asp.net上的。。。
没看清
回复

使用道具 举报

3

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
 楼主| 发表于 2020-4-30 20:00:01 | 显示全部楼层
要WINFORM的,用ooloife 的方法没试出来!
回复

使用道具 举报

0

主题

17

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-5-3 10:15:01 | 显示全部楼层
还没搞定?
触发DataBindingComplete事件
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    //遍历每一行
    foreach (DataGridViewRow dgv in dataGridViewOutMacs.Rows)
    {
        //取特定列的值,列索引是INDEX
        int i = dgv.Cells[INDEX].Value as int;
        if(i == null)
        {
            continue;//转换不成功
        }
        if(i == 0)
        {
            dgv.DefaultCellStyle.BackColor = Color.Blue;
        }
        else if(i == 1)
        {
            dgv.DefaultCellStyle.BackColor = Color.Red;
        }
    }
}
回复

使用道具 举报

0

主题

17

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-5-3 11:15:01 | 显示全部楼层
还没搞定?
触发DataBindingComplete事件
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    //遍历每一行
    foreach (DataGridViewRow dgv in dataGridView1.Rows)
    {
        //取特定列的值,列索引是INDEX
        int i = dgv.Cells[INDEX].Value as int;
        if(i == null)
        {
            continue;//转换不成功
        }
        if(i == 0)
        {
            dgv.DefaultCellStyle.BackColor = Color.Blue;
        }
        else if(i == 1)
        {
            dgv.DefaultCellStyle.BackColor = Color.Red;
        }
    }
}
回复

使用道具 举报

3

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
 楼主| 发表于 2020-5-4 10:00:02 | 显示全部楼层
我怎么没找到DataBindingComplete这个事件?
回复

使用道具 举报

0

主题

17

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-5-7 10:30:02 | 显示全部楼层
kyoetsuu  


   我怎么没找到DataBindingComplete这个事件?
  

===========================================
在DataGridView的“数据”类事件中,或者把事件按字母排序,很容易找到的。
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-5-7 20:00:01 | 显示全部楼层
的确没有..我也没找到!!我也请教下..怎样更改选中行的背景色..系统默认的蓝色不好看!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表