Condividi tramite


Procedura: rispondere alla selezione della data in un controllo server Web Calendar

Aggiornamento: novembre 2007

Se la proprietà SelectionMode del controllo Calendar è impostata su un valore diverso da None, l'utente potrà selezionare un giorno o un intervallo di date. È possibile rilevare la scelta dell'utente e rispondere di conseguenza.

Per rispondere alla selezione di una data

  • Creare un metodo per l'evento SelectionChanged del controllo Calendar con la firma seguente:

    Private Sub Calendar1_SelectionChanged(ByVal sender _
        As System.Object, ByVal e As System.EventArgs) _
        Handles Calendar1.SelectionChanged
    
    private void Calendar1_SelectionChanged (object sender, 
        System.EventArgs e)
    
    Nota:

    L'evento viene generato solo se la selezione della data viene modificata dall'azione dell'utente nel controllo. Se, ad esempio, l'utente fa clic due volte sulla stessa data, il secondo clic non genera un evento. L'evento non viene generato neanche se si imposta un intervallo di date a livello di codice.

Le informazioni sulla selezione della data sono disponibili nelle seguenti proprietà.

Proprietà

Descrizione

SelectedDate

Una singola data. Se l'utente ha selezionato una singola data, questa proprietà la contiene. Se l'utente ha selezionato più date, questa proprietà contiene la prima data dell'intervallo.

SelectedDates

Un insieme contenente tutte le date selezionate, che sono ordinate e univoche. Poiché il controllo Calendar non consente la selezione di più date singole da parte dell'utente, le date dell'insieme sono sequenziali.

Per determinare quante date vengono selezionate

  • Ottenere il valore della proprietà Count dell'insieme SelectedDates, come mostrato nell'esempio seguente.

    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 Sub
    
    private void Calendar1_SelectionChanged (object sender, System.EventArgs e)
    {
       Text1.Text = String.Format("You selected {0} date(s).",
          Calendar1.SelectedDates.Count);
    }   
    

Se l'utente ha selezionato più date, è possibile ottenerne l'intervallo.

Per ottenere l'intervallo di date di una selezione di più date

  1. Per ottenere il conteggio delle date selezionate, utilizzare la proprietà Count della proprietà SelectedDates.

  2. Ottenere la prima data nell'insieme, quindi l'ultima, estraendola dall'indice del conteggio meno uno. Nell'esempio seguente la prima e l'ultima data vengono visualizzate nei controlli casella di testo presenti nella pagina.

    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 Sub
    
    private 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();
       }
    }
    

Per ottenere l'intervallo di tempo di una selezione di più date

  • Creare un oggetto TimeSpan e impostarne il valore sulla differenza tra la prima e l'ultima data nell'insieme SelectedDates, quindi ottenere la proprietà Days dell'oggetto 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 Sub
    
    private 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);
    }   
    

Vedere anche

Attività

Procedura: selezionare le date a livello di codice in un controllo server Web Calendar

Concetti

Cenni preliminari sul controllo server Web Calendar