简体   繁体   中英

fullcalendar cannot display event

Fullcalendar is not showing the events fetched by ajax. The events is successfully passed because I can display it by pop up but it is not showing in the calendar. The fullcalendar will show events if i manually set the events but once i use the data pass from .cs file it cannot render.

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Web.Services;
using System.Linq;
using System.Web.UI.WebControls;
using System.Web.Script.Serialization;
using System.Collections;
using System.Data;

namespace TravelPlannerO
{
    public partial class Schedule : System.Web.UI.Page
    {

    protected void Page_Load(object sender, EventArgs e)
        {
        }

        public class Event
        {
        public string id { get; set; }
        public string title { get; set; }
        public string start { get; set; }
        public string end { get; set; }
        public string desc { get; set; }
        public string status { get; set; }

        public Event(string id, string title, string start, string end,string desc,string status)
        {
            this.id = id;
            this.title = title;
            this.start = start;
            this.end = end;
            this.desc = desc;
            this.status = status;
        }
        };


        [WebMethod]
        public static string GetEvent()
        {
            string strSelect;
            SqlCommand cmdSelect;
            SqlDataReader dtr;
            SqlConnection conn;
            string connStr = ConfigurationManager.ConnectionStrings["plannerdb"].ConnectionString;
            conn = new SqlConnection(connStr);

            strSelect = "Select * from [Source.SavedPlan]";

            cmdSelect = new SqlCommand(strSelect, conn);
            conn.Open();
            dtr = cmdSelect.ExecuteReader();

 <script src="Scripts/moment.min.js"></script> <script src="Scripts/jquery-ui.custom.min.js"></script> <script src="Scripts/fullcalendar.min.js"></script> <script type="text/javascript"> var listofevent; $(document).ready(function () { $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, events:function (id,title,start, end, callback) { $.ajax({ type: "POST ", url: '<%=Microsoft.AspNet.FriendlyUrls.FriendlyUrl.Resolve(" /Schedule.aspx / GetEvent ")%>', data: {}, contentType: "application / json;charset = utf - 8 ", dataType: "json ", success: function (list) { listofevent = list.d; alert(listofevent); var events = []; alert(list.d); var obj = $.parseJSON(list.d); console.log(obj); $(list).find('event').each(function () { events.push({ title: $(this).attr('title'), start: $(this).attr('start'), end: $(this).attr('end') }); console.log(obj.calEvent); }); //callback(events); callback && callback(events); }, error: function (xhr, status, error) { alert(xhr.responseText); } }); }, defaultDate: '2015-1-1', selectable: true, editable: true, selectHelper: true, eventLimit: true, // allow " more " link when too many events </script> 
 <link href="Content/fullcalendar.css" rel="stylesheet" /> <link href="Content/fullcalendar.print.css" rel="stylesheet" media="print" /> <link href="Content/jquery-ui.min.css" rel="stylesheet"/> 
 <div id='calendar'></div> 

            List<object> array = new List<object>();

            if (dtr.HasRows)
            {
                var index_id = dtr.GetOrdinal("PlanId");
                var index_title = dtr.GetOrdinal("Name");
                var index_start = dtr.GetOrdinal("DateFrom");
                var index_end = dtr.GetOrdinal("DateTo");
                var index_desc = dtr.GetOrdinal("Description");
                var index_status = dtr.GetOrdinal("Status");


                while (dtr.Read())
                {
                var id = dtr.GetValue(index_id).ToString();
                var title = dtr.GetValue(index_title).ToString();
                var datestart = dtr.GetValue(index_start).ToString();
                var dateend = dtr.GetValue(index_end).ToString();
                var desc = dtr.GetValue(index_desc).ToString();
                var status = dtr.GetValue(index_status).ToString();

                DateTime RealStartDate = Convert.ToDateTime(datestart);
                DateTime RealEndDate = Convert.ToDateTime(dateend);
                string start = RealStartDate.ToString("s");
                string end = RealEndDate.ToString("s");

                Event eventrows = new Event(id, title, start, end,desc,status);

                array.Add(eventrows);   
                }
            }
            string myJsonString = (new JavaScriptSerializer()).Serialize(array);
            return myJsonString;
        }
        private static DateTime ConvertFromUnixTimestamp(double timestamp)
        {
            var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            return origin.AddSeconds(timestamp);
        }
    }
}

In my visual studio there are no spaces between the I think I might accidentally space it while I paste it here. I dont understand why the events is not showing. While i print 'list.d' from success: function(list), the result is [{"id:"1","title":"testoh","start":"2015-01-01T00:00:00","end":"2015-01-02T00:00:00","desc":"abaaba","status":"first "}, [{"id:"2","title":"okok","start":"2015-05-01T00:00:00","end":"2015-05-02T00:00:00","desc":"fdgd","status":"second "}] Is the format correct?. I noticed my callback function is not called but i dunno why

I solved this by editing the argument in the events:function (id,title,start, end, callback) to events:function (start, end,timezone, callback) . btw thanks for the reply..

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM