SelectedDate不适用于Calendar对象

时间:2012-09-20 06:33:32

标签: asp.net

我试图在ASP.NET上为Calendar对象设置一个新日期,但没有任何改变。这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{

    if (Page.IsPostBack)
    {
        cld_birth.SelectedDate = new DateTime(2003, 1, 1);
    }
}

5 个答案:

答案 0 :(得分:8)

尝试同时设置VisibleDate

if (Page.IsPostBack)
{
    cld_birth.SelectedDate = new DateTime(2003, 1, 1);
    cld_birth.VisibleDate = new DateTime(2003, 1, 1);
}

答案 1 :(得分:3)

如果日期包含非午夜时间,则还有一个问题是未突出显示所选日期(即忽略SelectedDayStyle)。 你期望第一个选择没问题。 不,不幸的是

            Dim oDt As New Date()
            oDt = Now                
            Dim oDtYesterday As New Date
            oDtYesterday = DateAdd(DateInterval.Day, -1, oDt)

            'oDtYesterday is all fine, but does not highlight
            'calDateFrom.SelectedDate = oDtYesterday 

            Dim sDateYesterday As String
            sDateYesterday = Format(oDtYesterday, "dd MMM yyyy")

            Dim oDtY As New Date
            oDtY = CDate(sDateYesterday & " 12:00:00 AM")

            calDateFrom.SelectedDate = oDtY 
            calDateFrom.VisibleDate = calDateFrom.SelectedDate

答案 2 :(得分:1)

如果您想首次设置页面加载的时间,请使用 IsPostBack Property 确定页面是否第一次加载,或者页面是否已发布回来。

if (!Page.IsPostBack)
    {
        cld_birth.SelectedDate = new DateTime(2003, 1, 1);
    }

答案 3 :(得分:1)

您必须在控件中定义SelectedDayStyle

<asp:Calendar ID="cld_birth" runat="server">
   <SelectedDayStyle Font-Size="X-Large" />
</asp:Calendar>

并使用:

if (!Page.IsPostBack)
{
  cld_birth.SelectedDate = new DateTime(2003, 1, 1);
}

答案 4 :(得分:0)

正如@ Martin-Brennan建议的那样,但代码可能需要放在Page_PreRender事件处理程序中。

  protected void Page_PreRender(object sender, EventArgs e)
  {
    if (Page.IsPostBack)
    {
      cld_birth.SelectedDate = new DateTime(2003, 1, 1);
      cld_birth.VisibleDate = new DateTime(2003, 1, 1);
    }
  }