Cómo: Controlar el desplazamiento por meses en un control Calendar de servidor Web

Actualización: noviembre 2007

De forma predeterminada, el calendario muestra el mes que contiene la fecha actual. Los usuarios pueden recorrer los distintos meses en el control Calendar haciendo clic en los vínculos de navegación por los meses en la barra de título del calendario. Puede controlar si estos vínculos estarán disponibles para que el usuario haga clic.

También puede navegar mediante programación, lo que resulta útil si se desea proporcionar un método alternativo para que los usuarios muestren un mes específico. Por último, puede responder a un evento que se produzca cuando el usuario navegue.

Para habilitar o deshabilitar la navegación por los meses de los usuarios

  • Establezca la propiedad ShowNextPrevMonth del control Calendar en true o false. Si la propiedad se ha establecido en false, el control no muestra los controles LinkButton que permiten a los usuarios desplazarse de mes en mes en el título.

    Sugerencia:

    Puede cambiar el aspecto de los vínculos de navegación por meses mediante las propiedades NextMonthText, PrevMonthText, NextPrevFormat y NextPrevStyle.

Para navegar por los meses mediante programación

  • Establezca la propiedad VisibleDate del control en la fecha del mes que desea mostrar. La fecha puede ser la de cualquier día del mes, aunque habitualmente se establece en el primer día del mes. Si la propiedad VisibleDate está vacía (si se ha establecido en DateTime.Empty), el mes que se muestra se deriva del valor de la propiedad TodaysDate.

    En el ejemplo siguiente, se realiza una navegación hasta febrero de 2000:

    Calendar1.VisibleDate = New Date(2000, 2, 1)
    
    Calendar1.VisibleDate = new DateTime(2000, 2, 1);
    

    Si se modifica la propiedad VisibleDate, no produce ningún efecto en los valores de las propiedades TodaysDate, SelectedDayStyle o SelectedDates.

Si se habilita la navegación por meses, el control producirá un evento cuando el usuario se mueva a otro mes. Puede controlar este evento para reemplazar o corregir la navegación por meses predeterminada. Por ejemplo, si está utilizando dos controles Calendar en una página de programación de viajes, puede impedir que el usuario establezca un mes como fecha inicial que sea posterior al mes de la fecha final.

Para responder a un evento de navegación por meses

  • Cree un método para el evento VisibleMonthChanged del control. Cuando se desencadene este evento, el control ya habrá cambiado la propiedad VisibleMonth al valor 1.

    El evento VisibleMonthChanged admite un solo argumento de tipo MonthChangedEventArgs. Puede utilizar las siguientes propiedades del argumento para determinar o reemplazar lo que está haciendo el usuario:

    Propiedad

    Descripción

    PreviousDate

    Valor del mes que se mostraba antes de que el usuario hiciera clic en un botón de navegación por meses. Puede comparar el valor de esta propiedad con el de la propiedad VisibleMonth del control a fin de determinar en qué dirección está navegando el usuario. Para cancelar el efecto del clic del usuario, establezca la propiedad VisibleDate del control en este valor.

    NewDate

    Valor del mes hasta el que navegó el usuario. La propiedad VisibleDate se actualiza a este valor antes de que se produzca el evento VisibleMonthChanged.

    Public Sub Calendar1_VisibleMonthChanged(ByVal sender As Object, _
       ByVal e As System.Web.UI.WebControls.MonthChangedEventArgs) _
       Handles Calendar1.VisibleMonthChanged
    
       ' Select the 10th and 25th of each month.
       Calendar1.SelectedDates.Clear()
       Calendar1.SelectedDates.Add(New DateTime(e.NewDate.Year, e.NewDate.Month, 10))
       Calendar1.SelectedDates.Add(New DateTime(e.NewDate.Year, e.NewDate.Month, 25))
    End Sub
    
    private void Calendar1_VisibleMonthChanged (object sender, 
       System.Web.UI.WebControls.MonthChangedEventArgs e)
    {
         // Select the 10th and 25th of each month.
         Calendar1.SelectedDates.Clear();
         Calendar1.SelectedDates.Add(new DateTime(e.NewDate.Year, e.NewDate.Month, 10));
         Calendar1.SelectedDates.Add(new DateTime(e.NewDate.Year, e.NewDate.Month, 25));
    }
    

Vea también

Conceptos

Información general sobre Calendar (Control de servidor Web)