Issue 895: JQuery FullCalendar not displaying events from aspx page
Status:  Done
Owner: ----
Closed:  May 2011
Reported by sowji...@gmail.com, Apr 7, 2011
Hi,

I have implemented JQuery FullCalendar by fetching the events dynamically from an aspx page. But it is not displaying the events on the calendar. But if I manually add the page response to the events attribute, it works fine. Can anybody please help what would be the issue? Here is my code.

$('#calendar').fullCalendar({
        theme: true,
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        //events: "GetCalendarEvents.aspx?id=2612&role=supervisor"  --->not working
 // works fine if i add the above page's response to the events manually as shown below
        events: [
                {
                    "id": 1,
                    "title": "Family Sick - Unsubstantiated",
                    "start": "2011-03-21 08:00:00",
                    "end": "2011-03-22 17:00:00",
                    "editable": false,
                    "url": "LeaveRequestForm.aspx?id=1"
                },
                {
                    "id": 2,
                    "title": "Family Medical Leave",
                    "start": "2011-04-25 13:00:00",
                    "end": "2011-04-25 17:00:00",
                    "editable": false,
                    "url": "LeaveRequestForm.aspx?id=1"
                },
                {
                    "id": 3,
                    "title": "Vacation",
                    "start": "2011-04-14 08:00:00",
                    "end": "2011-04-16 17:00:00",
                    "editable": false,
                    "url": "LeaveRequestForm.aspx?id=2"
                },
                {
                    "id": 4,
                    "title": "Training",
                    "start": "2011-04-12 08:00:00",
                    "end": "2011-04-12 17:00:00",
                    "editable": false,
                    "url": "LeaveRequestForm.aspx?id=2"
                }

            ]

    });

GetCalendarEvents.aspx code-behind:

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

    Dim dbAPD As DBAPDData = New DBAPDData()
    Dim util As Utils = New Utils()
    Dim approverID As String = ""
    Dim approverRole As String = ""

    If (Request.QueryString("id") IsNot Nothing) Then
        approverID = Request.QueryString("id").Trim()
    End If

    If (Request.QueryString("role") IsNot Nothing) Then
        approverRole = Request.QueryString("role").Trim()
    End If

    Dim eventsList As List(Of CalendarEvent) = New List(Of CalendarEvent)()

    Dim ds As DataSet = dbAPD.GetLeaveRequestDetailsByApprover(approverID, approverRole, 2) 'LeaveStatusCode = 2 --> Approved
    If (ds.Tables(0).Rows.Count > 0) Then

        For Each dr As DataRow In ds.Tables(0).Rows

            Dim calEvent As CalendarEvent = New CalendarEvent()

            calEvent.id = If(IsDBNull(dr("LeaveRequestDetailsID")), 0, Convert.ToInt32(dr("LeaveRequestDetailsID")))
            calEvent.title = If(IsDBNull(dr("LeaveCode")), "", dbAPD.GetLeaveCodeDescription(Convert.ToString(dr("LeaveCode"))))
            calEvent.url = If(IsDBNull(dr("LeaveRequestID")), "", "LeaveRequestForm.aspx?id=" + Convert.ToString(dr("LeaveRequestID")))


            calEvent.start = If(IsDBNull(dr("FromDate")), "", String.Format("{0:yyyy-MM-dd HH:mm:ss}", Convert.ToDateTime(dr("FromDate"))))
            calEvent.end = If(IsDBNull(dr("ToDate")), "", String.Format("{0:yyyy-MM-dd HH:mm:ss}", Convert.ToDateTime(dr("ToDate"))))

            eventsList.Add(calEvent)

        Next

    End If

    ' Serialize the return value .
    Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
    Dim strEvents As String = js.Serialize(eventsList)

    Response.Clear()
    Response.Write(strEvents)

End Sub



Apr 8, 2011
#1 sowji...@gmail.com
Hi,

I figured out the issue. In "GetCalendarEvents.aspx" code-behind file, I added the following line after Response.Write(strEvents) and it worked fine.

Response.End()

Thanks,
Sowjanya
Apr 15, 2011
#2 p.stud...@gmail.com
It would be best to do it from the aspx page and not code behing.

Your aspx page should have these lines
"
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="YOURS.aspx.vb" Inherits="x.YOURS" %>
<%  Response.Write(strEvents)%>
"
No body,head or anything else.

Declare the 'strEvents' as public and generate it on page load.

Your method will work but my suggested one will stop any unwanted artefacts that may be generated by other classes etc.



May 8, 2011
Project Member #3 adamrs...@gmail.com
sorry, but this issue tracker is not for debugging peoples' projects in server-side languages, it is only meant to debug the js.
Status: Done