【问题标题】:Change Row Color in Datagridview based on values of a cells in another Datagridview根据另一个 Datagridview 中单元格的值更改 Datagridview 中的行颜色
【发布时间】:2015-10-15 10:36:40
【问题描述】:

我正在使用 c# winform sql server

在我的数据库中,我尝试管理小公司的员工假期,因此创建了两个表

第一个表名为tblMember

idMember (PK, int, not null)

memberName(varchar(50), null)

该表以一对多关系相关

第二个表名为tblVacations

idVacation (PK, int, not null)

vacationStart(日期,空)

vacationEnd(日期,空)

idMember_L(FK, int, null)

然后我创建了一个带有两个 datagridview 的表单,第一个名为 dg_member 填充其数据(名称来自 tblMember)抛出一个存储过程

第二个datagridviewdgVacation填充相关数据

现在我想用红色将dg_member 中今天缺席的名字(今天介于vacationStart 和vacationEnd 之间)和如果成员今天来(今天等于vacationEnd)名字变成绿色

我试过代码:

private void dgMember_Grade_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            foreach (DataGridViewRow Myrow in dgMember_Grade.Rows)
            {
                var cvStart = dgVacation.Rows[0].Cells[1].Value;
                var cvEnd = dgVacation.Rows[0].Cells[2].Value;

                if (cvStart == null || cvStart == DBNull.Value)
                    continue;

                DateTime startDate = Convert.ToDateTime(cvStart);
                DateTime endDate = Convert.ToDateTime(cvEnd);

                if (startDate < DateTime.Now && endDate > DateTime.Now)
                {
                    Myrow.DefaultCellStyle.BackColor = Color.Red;
                }
                else if (endDate == DateTime.Now)
                {
                    Myrow.DefaultCellStyle.BackColor = Color.Green;
                }
            }
        }

但它给了我一个错误

索引超出范围。必须是非负数且小于集合的大小。

谢谢

【问题讨论】:

    标签: c# datagridview cell-formatting


    【解决方案1】:
    declare @tmw Date  = DATEADD(day, 1,getdate())
    select
    
    
    m.MemberName
    , case when t.idMember_L is null then 'False' else 'True' end as OnHoliday
    , case when (select count (tm.idMember_L) from tblVacations tm where
        m.idMember = tm.idMember_L and
         t.vacationStart <= @tmw and t.vacationEnd >= @tmw ) > 0
         then 'False' else 'True' end as OnHolidayTomorrow
     from tblMember m
         left outer join tblVacations t
         on m.idMember = t.idMember_L and
         t.vacationStart <= getdate() and t.vacationEnd >= getdate()
    

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 2017-02-05
      • 2013-10-23
      • 2015-06-11
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      相关资源
      最近更新 更多