2011-06-10 4 views
0

J'ajoute un calendrier à mon application et j'ai du mal à mettre à jour la date. Pour une raison quelconque, lorsque je sélectionne une nouvelle date, la date précédente est affichée. Donc, si cela commence le 11 et que je sélectionne le 13, le 11ème est affiché à nouveau quand la page se recharge et ensuite si je sélectionne le 14ème, le 13ème sera chargé.Calendrier ASP.NET non mis à jour

Je déclare le calendrier dans l'application comme ceci:

<asp:Calendar ID="myCal" runat="server"></asp:Calendar> 

Et puis je ce code dans Page_Init:

myCal.SelectedDate = DateTime.Today.AddDays(1); 

Et utiliser dans page_load:

String date = myCal.SelectedDate.ToString("yyyyMMdd"); 

Merci.

Répondre

1

Votre calendrier déclenche probablement une publication, mais l'événement Page_Load se produit avant tout événement de contrôle. Cela signifie que vous chargez la valeur "précédente" sélectionnée à chaque fois dans la méthode Page_Load.

Vous devez déplacer votre string date = myCal.SelectedDate.ToString("yyyyMMdd"); et son utilisation associée du Page_Load vers le gestionnaire d'événements SelectionChanged pour le contrôle du calendrier.

donc créer la méthode suivante:

protected void myCal_SelectionChanged(Object sender, EventArgs e) 
{ 
    string date = myCal.SelectedDate.ToString("yyyyMMdd"); 
    // lblMyLabel.Text = date; 
    // Put your code that handles the selected date here. 
} 

et l'associer à votre calendrier:

<asp:Calendar ID="myCal" runat="server" 
    OnSelectionChanged="myCal_SelectionChanged"></asp:Calendar> 
+0

Il me donne OnSelectionChange n'est pas un attribut valide de l'élément 'Calandre' – user776530

+0

@user, je fixe ci-dessus. Chacun des 'SelectionChange' doit être 'SelectionChanged'. Cela devrait résoudre n'importe quel problème. –

+0

Cela fait toujours page_load avant de changer la valeur. Est-il possible de changer la valeur avant page_load? – user776530