代码之家  ›  专栏  ›  技术社区  ›  Joel Coehoorn

在ASP.NET日历控件中默认选择当前日期

  •  18
  • Joel Coehoorn  · 技术社区  · 16 年前

    假设我有一个具有此日历控件的ASPX页:

    <asp:Calendar ID="Calendar1" runat="server"  SelectedDate="" ></asp:Calendar>
    

    有没有什么可以让selecteddate默认使用当前日期,而不必使用后面的代码?

    7 回复  |  直到 16 年前
        1
  •  18
  •   Philip Rieck    11 年前

    如果已经在进行数据绑定:

    <asp:Calendar ID="Calendar1" runat="server"  SelectedDate="<%# DateTime.Today %>" />
    

    会做的。这并不要求在某个地方执行page.databind()调用(或父控件上的databind调用)。如果您不这样做,并且绝对不希望页面上有任何代码隐藏,那么您必须创建一个包含日历控件并设置其SelectedDate的用户控件。

        2
  •  16
  •   Kevin    16 年前

    日期时间 不工作,使用 日期时间 相反。

        3
  •  6
  •   Samer Makary    13 年前

    我试图让日历默认选择一个日期,并为用户突出显示它。 但是,我尝试使用上面的所有选项,但我只设置了日历的选定日期。

    protected void Page_Load(object sender, EventArgs e)
        Calendar1.SelectedDate = DateTime.Today;
    }
    

    以前的代码没有突出显示所选内容,尽管它将SelectedDate设置为Today。

    但是,要选择并突出显示以下代码将正常工作。

    protected void Page_Load(object sender, EventArgs e)
    {
        DateTime today = DateTime.Today;
        Calendar1.TodaysDate = today;
        Calendar1.SelectedDate = Calendar1.TodaysDate;
    }
    

    检查此链接: http://msdn.microsoft.com/en-us/library/8k0f6h1h(v=VS.85).aspx

        4
  •  6
  •   Eray Balkanli    6 年前

    有两种方法。

    晚绑定

    <asp:Calendar ID="planning" runat="server" SelectedDate="<%# DateTime.Now %>"></asp:Calendar>
    

    代码隐藏方式(页面加载解决方案)

    protected void Page_Load(object sender, EventArgs e)
    {
        BindCalendar();
    }
    
    private void BindCalendar()
    {
        planning.SelectedDate = DateTime.Today;
    }
    

    尽管如此,我还是强烈建议用bindmystuff的方式来完成。单入口点更容易调试。但既然你似乎知道你的比赛,你已经准备好了。

        5
  •  4
  •   DaveShaw Thishin    12 年前

    我在上面尝试过上述代码,但没有成功,下面是在ASP.NET日历控件中设置所选当前日期的解决方案

    dtpStartDate.SelectedDate = Convert.ToDateTime(DateTime.Now.Date);
    dtpStartDate.VisibleDate = Convert.ToDateTime(DateTime.Now.ToString());
    
        6
  •  0
  •   gaz    13 年前

    我在2010年的VWD中也遇到了同样的问题,而且,偶然的是,我有两个控制。一个在代码隐藏中可用,另一个不可访问。我认为控制中的语句顺序导致了这个问题。我把“runat”放在“selecteddate”之前,这似乎可以解决问题。当我把“runat”放在“selecteddate”后面时,它仍然有效! 不幸的是,我现在不知道为什么它不起作用,也没有原来的不起作用。

    这些现在都起作用了:

    <asp:Calendar ID="calDateFrom" SelectedDate="08/02/2011" SelectionMode="Day" runat="server"></asp:Calendar>
    <asp:Calendar runat="server" SelectionMode="Day" SelectedDate="08/15/2011 12:00:00 AM" ID="Calendar1" VisibleDate="08/03/2011 12:00:00 AM"></asp:Calendar>
    <asp:Calendar SelectionMode="Day" SelectedDate="08/31/2011 12:00:00 AM" runat="server" ID="calDateTo"></asp:Calendar>
    
        7
  •  0
  •   David.Chu.ca    13 年前

    实际上,我无法在ASPX中获取所选日期。以下是在代码中设置所选日期的方法:

    protected void Page_Load(object sender, EventArgs e)
    {
       if (!Page.IsPostBack)
       {
          DateTime dt = DateTime.Now.AddDays(-1);
          Calendar1.VisibleDate = dt;
          Calendar1.SelectedDate = dt;
          Calendar1.TodaysDate = dt;
          ...
        }
     }
    

    在上面的示例中,我需要将默认选择的日期设置为昨天。关键是设置今天的日期。否则,所选日历日期始终为今天。