C# 根据另一个Datagridview中单元格的值更改Datagridview中的行颜色
我正在使用WinC winform sql server 在我的数据库中,我试图管理我的小公司中的员工假期,因此创建了两个表 第一个名为tblMember的表 idMember PK,int,不为null memberName varchar50,null 该表以一对多的关系与 第二个表名为tblVacations IDPK,int,不为空 假期开始日期,空 假期结束日期,null idMember_LFK,int,null 然后我创建了一个带有两个datagridview的表单,第一个名为dg_的成员通过一个存储过程填充其数据名 第二个datagridview将填充相关数据 现在我想把今天缺席的DGU成员的名字涂成红色,介于vacationStart和vacationEnd之间,如果该成员今天来,则名称变为绿色 我试过密码:C# 根据另一个Datagridview中单元格的值更改Datagridview中的行颜色,c#,datagridview,cell-formatting,C#,Datagridview,Cell Formatting,我正在使用WinC winform sql server 在我的数据库中,我试图管理我的小公司中的员工假期,因此创建了两个表 第一个名为tblMember的表 idMember PK,int,不为null memberName varchar50,null 该表以一对多的关系与 第二个表名为tblVacations IDPK,int,不为空 假期开始日期,空 假期结束日期,null idMember_LFK,int,null 然后我创建了一个带有两个datagridview的表单,第一个名为dg
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;
}
}
}
但这给了我一个错误
索引超出范围。必须为非负数且小于集合的大小
多谢各位
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()