如何在 DatePicker 中使一周中的某些天不可用

Posted

技术标签:

【中文标题】如何在 DatePicker 中使一周中的某些天不可用【英文标题】:How to make some days of the week in DatePicker unavailable 【发布时间】:2021-02-20 20:35:56 【问题描述】:

我正在从数据库中获取星期几的序列号,我希望在 DatePicker 中提供星期几,而其余日期不可用。但是除了最后一天(在我的情况下,这是一年中的最后一天)之外,所有日子都变得不可用。我究竟做错了什么?我以链接中的代码为基础:How to black out specific days of the week (datepicker) [VB](顺便说一句,它有效)。

using (OracleConnection conn = new OracleConnection(connectionString))
                
    int year = DateTime.Now.Year;
    var minDate = DateTime.Now;
    var maxDate =new DateTime(year, 12, 31);
    string r;
    string st = comboBox2.SelectedItem.ToString();
    string sql3 = "select distinct id_week from timetable,masters where 
    timetable.id_mas=masters.cod and masters.fio = '" + st + "'";
    using (OracleCommand command = new OracleCommand(sql3, conn))
    
        OracleDataReader reader3 = command.ExecuteReader();

        while (reader3.Read())
        
            r = reader3[0].ToString();

            for (var d = minDate; d <= maxDate> d; d = d.AddDays(1))
            
                if ((int)d.DayOfWeek != Convert.ToInt32(r))
                
                    dateTimePicker1.BlackoutDates.Add(new CalendarDateRange(d));
                
            
        

        reader3.Close();
    

【问题讨论】:

MonthlyCalendar.DisplayDateEnd = new DateTime(2020, 3, 31); 【参考方案1】:

要完成这项工作,有必要改变一些逻辑。

 int dayOfWeek;
 IList<DayOfWeek> dow = new List<DayOfWeek>();

 using (OracleDataReader reader3 = command.ExecuteReader())
 
     // Prepare days of week that should be available
     while (reader3.Read())
     
         var r = reader3[0].ToString();     
         if (Int32.TryParse(r, out dayOfWeek))
         
             dow.Add((DayOfWeek)dayOfWeek); 
         
     
 
 
 // Now prepare the calender  
 for (var d = minDate; d <= maxDate; d = d.AddDays(1))
  
     // If day of week not included to the list then blackout it.                
     if (!dow.Contains(d.DayOfWeek))
     
         dateTimePicker1.BlackoutDates.Add(new CalendarDateRange(d));                            
     
 

【讨论】:

以上是关于如何在 DatePicker 中使一周中的某些天不可用的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 PHP 数据库中的结果在 jQuery 日期选择器上禁用一周中的某些天

Crontab 在一天中的两个小时运行,但其中一个小时不包括一周中的某些天

如何在 Objective-C 中的特殊日期获得一周中的星期一?

如何检查日期是不是是 MySQL 中一周中的特定日期?

如何在 Alteryx 或 Python 中将日期转换为一周中的第 n 天?

如何在 oracle 中计算工作日,不包括一周中的任何特定日期?