2011-02-01 5 views
1

J'essaie d'être un peu plus à l'aise avec VB.net et son calendrier. J'ai codé à l'endroit où j'ai un calendrier affiché avec quelques événements et si vous sélectionnez un jour ou changez le mois, l'étiquette au-dessus du calendrier reflète les changements. Ce que je veux faire, c'est permettre aux utilisateurs d'ajouter de nouveaux événements à l'horaire. Actuellement, je ne sais pas comment afficher les nouveaux événements sur le calendrier.comment afficher les nouveaux événements sur le calendrier

code:

Public Class Calendar 
    Inherits System.Web.UI.Page 

    Dim schedule As New Hashtable 
    Dim _scheduleData As Hashtable 


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     _scheduleData = GetSchedule() 

     Calendar1.Caption = "Personal Schedule" 
     Calendar1.FirstDayOfWeek = WebControls.FirstDayOfWeek.Sunday 
     Calendar1.NextPrevFormat = NextPrevFormat.ShortMonth 
     Calendar1.TitleFormat = TitleFormat.MonthYear 
     Calendar1.ShowGridLines = True 
     Calendar1.DayStyle.HorizontalAlign = HorizontalAlign.Left 
     Calendar1.DayStyle.VerticalAlign = VerticalAlign.Top 
     Calendar1.DayStyle.Height = New Unit(75) 
     Calendar1.DayStyle.Width = New Unit(100) 
     Calendar1.OtherMonthDayStyle.BackColor = Drawing.Color.DarkSlateBlue 
     Calendar1.TodaysDate = New DateTime(2011, 2, 1) 
     Calendar1.VisibleDate = Calendar1.TodaysDate 

    End Sub 

    Private Function GetSchedule() As Hashtable 

     schedule("2/14/2011") = "Valentines Day" 
     schedule("2/1/2011") = "Presentation" 
     schedule("5/16/2011") = "Birthday" 

     Return schedule 

    End Function 

    Private Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs) Handles Calendar1.DayRender 
     If Not _scheduleData(e.Day.Date.ToShortDateString()) Is Nothing Then 

      Dim lit = New Literal() 
      lit.Text = "<br />" 
      e.Cell.Controls.Add(lit) 

      Dim lbl = New Label() 
      lbl.Text = _scheduleData(e.Day.Date.ToShortDateString()) 
      lbl.Font.Size = New FontUnit(FontSize.Small) 
      e.Cell.Controls.Add(lbl) 

     End If 

    End Sub 


    Private Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged 
     LabelAction.Text = "Selection changed to: " + Calendar1.SelectedDate.ToShortDateString 

    End Sub 


    Private Sub Calendar1_VisibleMonthChanged(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MonthChangedEventArgs) Handles Calendar1.VisibleMonthChanged 
     LabelAction.Text = "Month changed to: " + e.NewDate.ToShortDateString() 

    End Sub 

    Private Sub addButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles addButton.Click 
     Dim day As Date 
     Dim name As String 

     day = dayText.Text 
     name = nameText.Text 

     schedule(day) = name 

    End Sub 



End Class 

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Calendar.aspx.vb" Inherits="WebApplication2.Calendar" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <asp:Label ID="LabelAction" runat="server"></asp:Label> 
     <br /> 
     <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar> 
     <asp:Label ID="Label1" runat="server" Text="Date"></asp:Label> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     <asp:Label ID="Label2" runat="server" Text="Name of Event"></asp:Label> 
     <br /> 
     <asp:TextBox ID="dayText" runat="server" Width="66px"></asp:TextBox> 
&nbsp;&nbsp;&nbsp;&nbsp; 
     <asp:TextBox ID="nameText" runat="server"></asp:TextBox> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     <asp:Button ID="addButton" runat="server" Text="Add Event" /> 

    </div> 
    </form> 
</body> 
</html> 
+0

Etes-vous en train d'enregistrer le programme dans la base de données ou le fichier xml – Kronass

+0

Je n'ai pas vraiment besoin de report, j'ai juste besoin de le rendre avec l'événement ajouté. – amazinghorse24

Répondre

0

Je l'ai résolu mais en utilisant le dictionnaire

Définir le planificateur comme

suivante
Dim schedule As New Dictionary(Of Date, String) 

Pour GetSchedule je l'ai changé à ce

Private Sub GetSchedule() 
    schedule(New Date(2011, 2, 14)) = "Valentines Day" 
    schedule(New Date(2011, 1, 2)) = "Presentation" 
    schedule(New Date(2011, 5, 16)) = "Birthday" 
End Function 

En cas mois ajouter à vérifier tous les événements si elles sont dans le mois visible

Private Sub Calendar1_VisibleMonthChanged(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MonthChangedEventArgs) Handles Calendar1.VisibleMonthChanged 
     GetSchedule() 
     Dim StartDate As Date = Calendar1.VisibleDate 
     Dim EndDate As New Date(Calendar1.VisibleDate.Year, Calendar1.VisibleDate.Month, Date.DaysInMonth(Calendar1.VisibleDate.Year, Calendar1.VisibleDate.Month)) 
     For Each Item As KeyValuePair(Of Date, String) In schedule 
      If Item.Key >= StartDate And Item.Key <= EndDate Then 

       MsgBox(Item.Value) 
       'Add view actions of this month 
      End If 
     Next 
    End Sub 

S'il vous plaît tester et voir comment cela fonctionne avec vous

Note: il travaillera pour le mois visible et il ne sera pas affiché pour les autres mois

Questions connexes