如何着色日期选择器?

时间:2017-03-23 21:18:19

标签: c# asp.net webforms

如何在绿色,2个橙色日期选择器中标记8天并执行此操作直到年底? 从数据库中的日期开始。 我附上一张图片。 我已经问过,但没有给我解释。

enter image description here

目前我有以下代码:

if (Tipo == "1") //Tipos de Jornadas
                    {
                        DateTime FechaJornada = Convert.ToDateTime(iRow["Jornada_Ini"]);
                        DateTime FechaJ = FechaJornada.AddDays(8);
                        DateTime Descanso = FechaJ.AddDays(2);
                        DateTime Jornada2 = FechaJ.AddDays(2);
                        DateTime Fecha2 = Jornada2.AddDays(8);
                        DateTime Descanso2 = Fecha2.AddDays(2);
                        DateTime Jornada3 = Fecha2.AddDays(2);
                        DateTime Fecha3 = Jornada3.AddDays(8);
                        DateTime Descanso3 = Fecha3.AddDays(2);  

                        if (e.Day.Date >= FechaJornada && e.Day.Date < FechaJ) //Días Laboraes
                        {
                            e.Cell.BackColor = System.Drawing.Color.DarkGreen;
                        }
                        if (e.Day.Date >= Jornada2 && e.Day.Date < Fecha2) //Días Laboraes
                        {
                            e.Cell.BackColor = System.Drawing.Color.DarkGreen;
                        }
                        if (e.Day.Date >= Jornada3 && e.Day.Date < Fecha3) //Días Laboraes
                        {
                            e.Cell.BackColor = System.Drawing.Color.DarkGreen;
                        }
                        if (e.Day.Date >= FechaJ && e.Day.Date < Descanso) //Días Descanso
                        {
                            e.Cell.BackColor = System.Drawing.Color.DarkOrange;
                        }
                        if (e.Day.Date >= Fecha2 && e.Day.Date < Descanso2) //Días Descanso
                        {
                            e.Cell.BackColor = System.Drawing.Color.DarkOrange;
                        }
                        if (e.Day.Date >= Fecha3 && e.Day.Date < Descanso3) //Días Descanso
                        {
                            e.Cell.BackColor = System.Drawing.Color.DarkOrange;
                        }
                    }

但是我想在循环中完成它,因为我必须根据您的旅程类型填写日历。目前我想要将日历绘制为8天绿色和2个橙色,直到月底,并以我在上个月停留的颜色开始新月。 你可以用一个循环来做到这一点,你可以支持我知道

1 个答案:

答案 0 :(得分:0)

您可以使用DayRender事件处理程序进行此类操作。虽然我的回答并没有完全解决你的问题,但它可以通过添加一点点逻辑给你一个继续如何做到这一点的提示,因为每个月的天数不相等,有些有30天,有些有28天/ 29或31,它需要一点思考如何实现这一点。

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
 int[] arOfDaysInOrange = { 9, 10, 19, 20, 29, 30 };
 if (arOfDaysInOrange.Contains(Convert.ToInt32(e.Day.DayNumberText)))
  e.Cell.BackColor = System.Drawing.Color.DarkOrange;
 else
  e.Cell.BackColor = System.Drawing.Color.DarkGreen;
}

此代码剪辑的输出是:

Sample output