Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
Si la propiedad SelectionMode del control Calendar se establece en un valor diferente de None, el usuario puede seleccionar un día o un intervalo de fechas. Puede detectar la elección del usuario y responder a ella.
Para responder a una selección de fecha
Cree un método para el evento SelectionChanged del control Calendar con la firma siguiente:
Private Sub Calendar1_SelectionChanged(ByVal sender _ As System.Object, ByVal e As System.EventArgs) _ Handles Calendar1.SelectionChangedprivate void Calendar1_SelectionChanged (object sender, System.EventArgs e)
Nota:El evento sólo se desencadena si el usuario realiza una acción en el control para cambiar la fecha seleccionada. Por ejemplo, si el usuario hace clic dos veces en la misma fecha, el segundo clic no produce ningún evento. El evento tampoco se produce si se establece un intervalo de fechas mediante programación.
La información relativa a la selección de fecha se encuentra disponible en estas propiedades:
Propiedad |
Descripción |
|---|---|
Fecha única. Si el usuario seleccionó una fecha única, esta propiedad contiene esta fecha. Si el usuario seleccionó varias fechas, esta propiedad contiene la primera fecha del intervalo. |
|
Colección que contiene todas las fechas seleccionadas. Las fechas de esta colección están ordenadas y son únicas. Dado que el control Calendar no permite que el usuario seleccione varias fechas individuales, las fechas de la colección son además consecutivas. |
Para determinar cuántas fechas están seleccionadas
Obtenga el valor de la propiedad Count de la colección SelectedDates, tal y como se muestra en el ejemplo siguiente.
Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Calendar1.SelectionChanged Text1.Text = "You selected " _ & Calendar1.SelectedDates.Count.ToString() _ & " date(s)." End Subprivate void Calendar1_SelectionChanged (object sender, System.EventArgs e) { Text1.Text = String.Format("You selected {0} date(s).", Calendar1.SelectedDates.Count); }
Si determinó que el usuario seleccionó varias fechas, puede obtener el intervalo.
Para obtener el intervalo de fechas de una selección de varias fechas
Obtenga el número de fechas seleccionadas mediante la propiedad Count de la propiedad SelectedDates.
Obtenga la primera fecha de la colección y, a continuación, obtenga la última fecha extrayendo la fecha en el índice del recuento menos uno. En el ejemplo siguiente se muestran la primera y la última fecha en controles de cuadro de texto de la página.
Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Calendar1.SelectionChanged With Calendar1.SelectedDates If .Count > 1 Then Dim firstDate As Date = .Item(0).Date Dim lastDate As Date = .Item(.Count - 1).Date TextBox1.Text = firstDate.ToString() TextBox2.Text = lastDate.ToString() End If End With End Subprivate void Calendar1_SelectionChanged (object sender, System.EventArgs e) { SelectedDatesCollection theDates = Calendar1.SelectedDates; if (theDates.Count > 1) { DateTime firstDate = theDates[0]; DateTime lastDate = theDates[theDates.Count-1]; TextBox1.Text = firstDate.ToString(); TextBox2.Text = lastDate.ToString(); } }
Para obtener el intervalo de tiempo de una selección de varias fechas
Cree un objeto TimeSpan y establézcalo en la diferencia entre la primera y la última fecha de la colección SelectedDates; a continuación, obtenga la propiedad Days del objeto TimeSpan.
Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged With Calendar1.SelectedDates Dim days As Integer Dim firstDate As Date = .Item(0).Date Dim lastDate As Date = .Item(.Count - 1).Date ' The Subtract method returns a TimeSpan object. days = lastDate.Subtract(firstDate).Days + 1 TextBox1.Text = "You have selected " & days.ToString() & " day(s)." End With End Subprivate void Calendar1_SelectionChanged (object sender, System.EventArgs e) { SelectedDatesCollection theDates = Calendar1.SelectedDates; TimeSpan timeSpan = theDates[theDates.Count-1] - theDates[0]; TextBox1.Text = String.Format("You have selected {0} day(s).", timeSpan.Days + 1); }
Vea también
Tareas
Cómo: Seleccionar fechas mediante programación en un control Calendar de servidor Web
Conceptos
Información general sobre Calendar (Control de servidor Web)