Calendar.SelectedDate不适用于将来的日期



我的网站上有一些奇怪的行为。我有一个名为UDExpiryCalendar的ASP日历,它在页面加载时获取其值。我从用户记录中读取DateTime,并填充UDExpiryCalendar.VisibleDateUDExpiryCalendar.SelectedDate,然后填充UDExpiryCalendar.DataBind();

我得到以下结果:

  • 日期在过去-显示正确的月份,显示正确的年份,并选择正确的日期
  • 日期在本月-显示正确的月份,显示正确的年份,当前日期变灰,并选择正确的日期(即使是未来几天(
  • 日期在未来-显示正确的月份,显示正确的年份,但未选择所选日期

有什么想法吗?

C#

var userID = Request.QueryString["ID"];
string getUserInfo = "select * from UserList where Id =" + userID;
SqlCommand getUserInfocmd = new SqlCommand(getUserInfo, con);
getUserInfocmd.ExecuteNonQuery();
DataTable dt = new DataTable();
SqlDataReader sqlDR = getUserInfocmd.ExecuteReader();
dt.Load(sqlDR);
sqlDR.Close();
DateTime oldExpiryDate = Convert.ToDateTime(dt.Rows[0][6]);
UDExpiryCalendar.VisibleDate = oldExpiryDate;
UDExpiryCalendar.SelectedDate = oldExpiryDate;
UDExpiryCalendar.DataBind();

ASP

<asp:Calendar ID="UDExpiryCalendar" runat="server" BackColor="White" BorderColor="#999999" CellPadding="4" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" Height="180px" Width="200px">
<DayHeaderStyle BackColor="#CCCCCC" Font-Bold="True" Font-Size="7pt" />
<NextPrevStyle VerticalAlign="Bottom" />
<OtherMonthDayStyle ForeColor="#808080" />
<SelectedDayStyle BackColor="#666666" Font-Bold="True" ForeColor="White" />
<SelectorStyle BackColor="#CCCCCC" />
<TitleStyle BackColor="#999999" BorderColor="Black" Font-Bold="True" />
<TodayDayStyle BackColor="#CCCCCC" ForeColor="Black" />
<WeekendDayStyle BackColor="#FFFFCC" />
</asp:Calendar>

我认为问题是你的日期中有时间成分。我测试了它,它(在Page_Load中(有效:

Calendar1.SelectionMode = CalendarSelectionMode.Day;
Calendar1.TodaysDate = DateTime.Now.Date;
Calendar1.SelectedDates.Clear();
Calendar1.SelectedDate = DateTime.Now.AddYears(2).Date;
Calendar1.VisibleDate = DateTime.Now.AddYears(2).Date;

最新更新