ASP.net Calendar Control

Discussion in 'ASP.NET / ASP.NET Core' started by mlawrence, Mar 10, 2004.

Thread Status:
Threads that have been inactive for 5 years or longer are closed to further replies. Please start a new thread.
  1. Hello,

    i create an ASP.net page where i inserted the Calendar control.

    Now i am trying to fill the calendar with events from an Access Database.

    I am having problems with it. Did anyone ever did something like this in ASP.net / VB? Can u help me out, send me some code, control or DW extension? Anything?

    Thank You Very Much,
    Miguel

    Cheers,
    Miguel

    .web: http://www.27lamps.com
    .email: [email protected]
     
  2. Hi,

    I created a calendar using this article: http://aspnet.4guysfromrolla.com/articles/041603-1.2.aspx
    THis site tends to have very informative articles.

    I got it to work after tinkering for a while. Here's what I ended up with. Hope it helps.

    <%@ Page Language="VB" %>
    <script runat="server">

    Public Structure MyDates
    Dim _Title as String
    Dim _Date as DateTime
    Dim _Id as String
    End Structure


    Public MyCollection As Collection
    Public tempDate As DateTime

    Public Sub Page_Load()
    tempDate = Calendar1.TodaysDate
    If Not (Page.IsPostBack) Then
    Get_DBItems()
    End if
    End Sub

    Public Sub Get_DBItems()

    Dim myConnection As OleDbConnection
    Dim myCommand As OleDbCommand
    Dim myStartDate = tempDate.AddDays(-31) '-5
    Dim mySQL = "SELECT e_title, e_event_id, e_event_status, e_date_start FROM event_detail where e_date_start >=" + "#"+ myStartDate +"#"+ " and e_event_status = 'A' order by e_date_start desc"

    myConnection = New OleDbConnection(ConfigurationSettings.AppSettings("ConnectionString") )
    myCommand = New OleDbCommand(mySQL , myConnection)


    '// Set to 40 days before the current value of tempDate
    '//Dim parameterDate As New OleDbParameter("@_Date", OleDbDbType.DateTime, 8)
    '// parameterDate.Value = tempDate.AddDays(-40)
    '// myCommand.Parameters.Add(parameterDate)

    '// Set to 40 days after the current value of tempDate
    '//Dim parameterDate2 As New OleDbParameter("@_Date_Plus_1", OleDbDbType.DateTime, 8)
    '// parameterDate2.Value = tempDate.AddDays(40)
    '// myCommand.Parameters.Add(parameterDate2)

    Dim myDataReader As OleDbDataReader
    myConnection.Open()
    myDataReader = myCommand.ExecuteReader()

    Dim temp As MyDates
    MyCollection = New Collection()

    While(myDataReader.Read())
    '//Created each time through the loop to get a new item to load and add to the collection
    temp = New MyDates()

    temp._Title = myDataReader.Item("e_title")
    temp._Date = CDate(myDataReader.Item("e_date_start"))
    temp._Id = myDataReader.Item("e_event_id")

    MyCollection.Add(temp)


    End While

    '// Close
    myDataReader.Close()
    myConnection.Close()



    End Sub


    Private Sub Calendar1_DayRender(sender As Object, e As DayRenderEventArgs)
    Dim Item as MyDates '//Temporary storage for looping through the collection
    Dim TextColor as String

    Dim DayHold as DateTime = "01/01/1900" '//Temporary date to check for multiple items per day

    Dim MultipleItemDay as Boolean = False

    '// Set to true if the date is in the collection and needs to be displayed
    Dim DayTextHasChanged As Boolean = False

    '//To build the string for the contents of the table cell
    '//I'll use the stingbuilder class instead of concatenation
    Dim temp as StringBuilder


    dim StrUrl as String
    For Each Item In MyCollection
    '//The collection is loaded in date order. So, if the date is different than the DayHold variable
    '//And I've already found the right day in the collection, I can exit the for loop
    If DayHold <> Item._Date Then
    If DayTextHasChanged = True
    Exit for
    End if
    MultipleItemDay = False
    DayHold = Item._Date
    Else
    MultipleItemDay = True
    End if

    '//If I've found a date matching the current date...I need to create the appropriate text
    If e.Day.Date = Item._Date.ToString("d") Then

    If MultipleItemDay = False Then
    temp = New StringBuilder() '//Create a new stringbuilder object
    Else
    temp.Append("
    ") '//add a seperator to the stringbuilder
    End If

    'StrUrl = "<A HREF=../Event/detail_rolla.asp?id=" '+<%= Server.URLEncode(Item._Title.ToString())%> +"TARGET=_self>"+Item._Title.ToString() +"
    "
    '"<a href=../Event/event_detail.asp?id="+<%= Server.URLEncode(Item._Title.ToString())%>+"></a><a href="aboutus/purpose.asp">

    'StrUrl = "<a href=../Event/event_detail.asp?id="+<%= Server.URLEncode(Item._Title.ToString())%>+" TARGET=_self>"+Item._id.ToString()+"</a>"

    StrUrl = "<a href=../Event/event_detail.aspx?EventID="+Server.URLEncode(Item._Id.ToString())+" TARGET=_self>"+Item._Title.ToString()+"</a>"


    temp.Append("<span style=""font-family:Arial; font-weight:bold;font-size:12px; color:")
    temp.Append(TextColor)
    temp.Append(""">
    ")
    temp.Append(StrUrl )
    temp.Append("</span>")
    DayTextHasChanged = True '//Set the flag
    End If
    Next

    '//If there was an Item for this day, add the stringbuilder text to the table cell
    If DayTextHasChanged = True then
    e.Cell.Controls.Add(New LiteralControl(temp.ToString()))
    End If

    End Sub
    'don't understand this
    Private Sub Calendar1_SelectionChanged(sender As Object, e As EventArgs)
    response.redirect("eventUpdate2.aspx?action=ADD")
    ' Dim myConnection As OleDbConnection
    ' Dim myCommand As OleDbCommand
    ' Dim myDataReader As OleDbDataReader
    ' myConnection = New OleDbConnection( ConfigurationSettings.AppSettings("ConnectionString") )
    ' myCommand = New OleDbCommand("Intranet_sp_Marketing_Get_Items_For_Single_Date", myConnection)
    ' myCommand.CommandType = CommandType.StoredProcedure

    ' /Dim parameter_Date As New OleDbParameter("@_Date", OleDbDbType.DateTime, 8)
    ' / parameter_Date.Value = Calendar1.SelectedDate
    ' / myCommand.Parameters.Add(parameter_Date)

    ' myConnection.Open()
    ' myDataReader = myCommand.ExecuteReader()

    'Dim temp As String = ""
    'Dim Category as String

    'While(myDataReader.Read())

    ' temp &= "Title : <a href=""edit.aspx?ID=" & myDataReader.Item("Id") & """>" & myDataReader.Item("e_title") & "</a>
    Date : " & myDataReader.Item("_Date") & "
    Promotion Type : " & myDataReader.Item("Type") & "
    Audience : " & myDataReader.Item("Audience") & "
    Person Responsible : " & myDataReader.Item("PersonResponsible") & "

    "
    'End While
    'daydetail.Visible = True
    'daydetail_render.InnerHTML = temp
    'myDataReader.Close()
    'myConnection.Close()
    'selectedday.InnerHTML = Calendar1.SelectedDate.ToString("MMM d, yyyy")

    'tempDate = Calendar1.SelectedDate '//
    'Get_DBItems()
    End Sub

    Private Sub MonthChanged(source As Object, e As MonthChangedEventArgs)
    '//Set the tempDatevariable to the value in the MonthChangedEventArgs NewDate property
    tempDate = e.NewDate

    '//Reload the collection
    Get_DBItems()
    End Sub

    </script>
    <!-- #include virtual="/include/header.aspx" -->
    <html>
    <head>
    <SOCIABLES:HEADER id="Header" style="Z-INDEX: 100" runat="server"></SOCIABLES:HEADER>
    </head>

    <form runat="server">
    <div id="daydetail" runat="server" visible="false">
    </div>
    <span id="selectedday" runat="server"><span id="daydetail_render" runat="server">
    <asp:Calendar id="Calendar1" Width="100%" DayHeaderStyle-Font-Name="Verdana" Height="600" TodayDayStyle-ForeColor="Black" DayStyle-BorderWidth="1" DayStyle-BorderStyle="Solid" OtherMonthDayStyle-ForeColor="#C0C0C0" SelectedDayStyle-ForeColor="#000000" SelectedDayStyle-BackColor="#faebd7" Runat="server" CellPadding="0" BorderColor="#000000" BackColor="white" TitleStyle-Font-Size="12" TitleStyle-Font-Name="Verdana" TitleStyle-Font-Bold="False" SelectionMode="Day" NextPrevFormat="FullMonth" DayStyle-Font-Size="12" DayStyle-Font-Name="Arial" DayStyle-verticalalign="Top" DayStyle-HorizontalAlign="Left" DayStyle-Width="14%" DayStyle-Height="100" OnVisibleMonthChanged="MonthChanged" FirstDayOfWeek="Monday" OnDayRender="Calendar1_DayRender" OnSelectionChanged="Calendar1_SelectionChanged">
    <TodayDayStyle forecolor="Black"></TodayDayStyle>
    <DayStyle font-size="12pt" font-names="Arial" horizontalalign="Left" height="100px" borderwidth="1px" borderstyle="Solid" width="14%" verticalalign="Top"></DayStyle>
    <DayHeaderStyle font-names="Verdana"></DayHeaderStyle>
    <SelectedDayStyle forecolor="Black" backcolor="AntiqueWhite"></SelectedDayStyle>
    <TitleStyle font-size="12pt" font-names="Verdana"></TitleStyle>
    <OtherMonthDayStyle forecolor="Silver"></OtherMonthDayStyle>
    </asp:Calendar>
    <!-- '//OnSelectionChanged="Calendar1_SelectionChanged" -->


    </span></span>>
    </form>
    </body>
    </html>
     
Thread Status:
Threads that have been inactive for 5 years or longer are closed to further replies. Please start a new thread.

Share This Page