如何在 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 中的特殊日期获得一周中的星期一?