Disons que j'ai une page aspx avec ce contrôle de calendrier:
<asp:Calendar ID="Calendar1" runat="server" SelectedDate="" ></asp:Calendar>
Y a-t-il quelque chose que je peux mettre pour SelectedDate pour lui faire utiliser la date actuelle par défaut, sans avoir à utiliser le code-behind?
Si vous effectuez déjà une liaison de données:
<asp:Calendar ID="Calendar1" runat="server" SelectedDate="<%# DateTime.Today %>" />
Le fera. Cela nécessite que quelque part vous effectuez un appel Page.DataBind () (ou un appel de liaison de données sur un contrôle parent). Si vous ne le faites pas et que vous ne voulez absolument pas de code sur la page, vous devrez créer un contrôle utilisateur qui contient un contrôle de calendrier et définit sa date sélectionnée.
DateTime.Now ne fonctionnera pas, utilisez plutôt DateTime.Today.
J'essayais de faire en sorte que le calendrier sélectionne une date par défaut et la surligne pour l'utilisateur. Cependant, j'ai essayé d'utiliser toutes les options ci-dessus, mais je n'ai réussi qu'à définir la date sélectionnée du calendrier.
protected void Page_Load(object sender, EventArgs e)
Calendar1.SelectedDate = DateTime.Today;
}
le code précédent n'a PAS mis en évidence la sélection, bien qu'il ait défini la date sélectionnée à aujourd'hui.
Cependant, pour sélectionner et mettre en surbrillance le code suivant fonctionnera correctement.
protected void Page_Load(object sender, EventArgs e)
{
DateTime today = DateTime.Today;
Calendar1.TodaysDate = today;
Calendar1.SelectedDate = Calendar1.TodaysDate;
}
vérifiez ce lien: http://msdn.Microsoft.com/en-us/library/8k0f6h1h (v = VS.85) .aspx
Deux façons de procéder.
<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;
}
Bien que je recommande fortement de le faire à partir d'une méthode BindMyStuff. Point d'entrée unique plus facile à déboguer. Mais puisque vous semblez connaître votre jeu, vous êtes prêt.
J'ai essayé ci-dessus avec le code ci-dessus mais ne fonctionne pas, voici la solution pour définir la date actuelle sélectionnée dans le contrôle du calendrier asp.net
dtpStartDate.SelectedDate = Convert.ToDateTime(DateTime.Now.Date);
dtpStartDate.VisibleDate = Convert.ToDateTime(DateTime.Now.ToString());
En fait, je ne peux pas obtenir la date sélectionnée dans aspx. Voici la façon de définir la date sélectionnée dans les codes:
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;
...
}
}
Dans l'exemple ci-dessus, je dois définir la date sélectionnée par défaut sur hier. Le point clé est de définir TodayDate. Sinon, la date de calendrier sélectionnée est toujours aujourd'hui.
Moi aussi, j'ai eu le même problème dans VWD 2010 et, par hasard, j'ai eu deux contrôles. L'un était disponible en code derrière et l'autre n'était pas accessible. Je pensais que l'ordre des déclarations dans les contrôles était à l'origine du problème. J'ai mis 'runat' avant 'SelectedDate' et cela a semblé le réparer. Quand je mets 'runat' après 'SelectedDate' ça marche toujours! Malheureusement, je ne sais pas maintenant pourquoi cela n'a pas fonctionné et je n'ai pas l'original qui n'a pas fonctionné.
Ceux-ci fonctionnent maintenant tous: -
<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>