0

DateFromとを選択するホテル予約カレンダーを作成しようとしていますDateTo

DateFromからまで繰り返して、DateToこれらすべての日付をカレンダーに表示する必要があります。これまでのコードでは、DateFromとを選択するだけDateToで、カレンダーにラベルとして表示されます。

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        DateTime df = (DateTime)dr.Field<DateTime?>("DateFrom");
        DateTime dt = (DateTime)dr.Field<DateTime?>("DateTo");


        if (e.Day.Date == dt.Date)
        {
            Label lbl = new Label();
            lbl.BackColor = System.Drawing.Color.Gray;
            lbl.Text = "Booked From";
            e.Cell.Controls.Add(lbl);
         }

        if (e.Day.Date == df.Date)
        {
            Label lbl = new Label();
            lbl.BackColor = System.Drawing.Color.Gray;
            lbl.Text = "Booked To";
            e.Cell.Controls.Add(lbl);
        }
    }  
4

2 に答える 2

1

あなたのコードをあまり変更しないで、私はこれをします:

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
  foreach (DataRow dr in ds.Tables[0].Rows)
  {
    DateTime df = (DateTime)dr.Field<DateTime?>("DateFrom");
    DateTime dt = (DateTime)dr.Field<DateTime?>("DateTo");

    if (e.Day.Date == dt.Date)
    {
        Label lbl = new Label();
        lbl.BackColor = System.Drawing.Color.Gray;
        lbl.Text = "Booked From";
        e.Cell.Controls.Add(lbl);
     }

    if (e.Day.Date == df.Date)
    {
        Label lbl = new Label();
        lbl.BackColor = System.Drawing.Color.Gray;
        lbl.Text = "Booked To";
        e.Cell.Controls.Add(lbl);
    }

    //Added Code
    if(e.Day.Date > df.Date && e.Day.Date < dt.Date)
    {
        Label lbl = new Label();
        lbl.BackColor = System.Drawing.Color.Gray;
        lbl.Text = "Day inbetween";
        e.Cell.Controls.Add(lbl);
    }
} 
于 2012-12-19T14:40:11.733 に答える
1

これが簡単な解決策です。

DateTime temp = df;

while (temp < dateTo)
{
   temp = temp.AddDays(1);
   // do something with inbetween date here...
}
于 2012-12-19T14:36:00.950 に答える