2011-07-22 21 views
0

イベントはFullCalenderでレンダリングされませんか?フルカレンダーでイベントが表示されていませんか?

var calendar = $('#calendar').fullCalendar({ 
    theme: true, 
    header: { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    //events: '/MyCalender/JsonResponse.ashx', 
    events: [{id: '1',title: 'Event1',start: 1312462800,end: 1312462800,allDay:false,description: 'Event1'},{id: '3',title: 'Event2',start: 1309890600,end: 1309890600,allDay:true,description: 'Event2'},{id: '4',title: 'Event5',start: 1311705000,end: 1311705000,allDay:true,description: 'Event5'},{id: '5',title: 'Event3',start: 1310927400,end: 1310927400,allDay:true,description: 'Event3'},{id: '6',title: 'Event4',start: 1310495400,end: 1310495400,allDay:true,description: 'Event4'},{id: '7',title: 'Time Event1',start: 1312144200,end: 1312174800,allDay:false,description: 'Time Event1'}], 
    ..other parameter    
     ... 
}); 

私はここにいくつかの試行錯誤の後

public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType = "application/json"; 

     DateTime start = new DateTime(1970, 1, 1); 
     DateTime end = new DateTime(1970, 1, 1); 

     start = start.AddSeconds(double.Parse(context.Request.QueryString["start"])); 
     end = end.AddSeconds(double.Parse(context.Request.QueryString["end"])); 


     String result = String.Empty; 

     result += "["; 

     List<int> idList = new List<int>(); 
     foreach (CalendarEvent cevent in EventDAL.getEvents(start, end)) 
     { 
      result += convertCalendarEventIntoString(cevent); 
      idList.Add(cevent.id); 
     } 

     if (result.EndsWith(",")) 
     { 
      result = result.Substring(0, result.Length - 1); 
     } 

     result += "]"; 
     //store list of event ids in Session, so that it can be accessed in web methods 
     context.Session["idList"] = idList; 

     context.Response.Write(result); 
    } 

    private String convertCalendarEventIntoString(CalendarEvent cevent) 
    { 
     String allDay = "true"; 
     if (ConvertToTimestamp(cevent.start).ToString().Equals(ConvertToTimestamp(cevent.end).ToString())) 
     { 

      if (cevent.start.Hour == 0 && cevent.start.Minute == 0 && cevent.start.Second == 0) 
      { 
       allDay = "true"; 
      } 
      else 
      { 
       allDay = "false"; 
      } 
     } 
     else 
     { 
      if (cevent.start.Hour == 0 && cevent.start.Minute == 0 && cevent.start.Second == 0 
       && cevent.end.Hour == 0 && cevent.end.Minute == 0 && cevent.end.Second == 0) 
      { 
       allDay = "true"; 
      } 
      else 
      { 
       allDay = "false"; 
      } 
     } 
     return "{" + 
        "id: '" + cevent.id + "'," + 
        "title: '" + HttpContext.Current.Server.HtmlEncode(cevent.title) + "'," + 
        "start: " + ConvertToTimestamp(cevent.start).ToString() + "," + 
        "end: " + ConvertToTimestamp(cevent.end).ToString() + "," + 
        "allDay:" + allDay + "," + 
        "description: '" + HttpContext.Current.Server.HtmlEncode(cevent.description) + "'" + 
        "},"; 
    } 


    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 

    private long ConvertToTimestamp(DateTime value) 
    { 
     long epoch = (value.ToUniversalTime().Ticks - 621355968000000000)/10000000; 
     return epoch; 
    } 
+0

Javascriptコンソールにエラーがありますか? – aldrin

+0

エラーは見つかりませんでした。私はFirebugを使ってエラーを修正しましたが、エラーはまったくありません。私はイベントオブジェクトを直接提供している場合、イベントのレンダリングは正常に動作しています。しかし、私はashx(javascriptでコードをコメントしたことがある)イベントを呼び出すたびに何も起こりません。 –

+0

ブラウザで/MyCalender/JsonResponse.ashxを開いてみましたが、そのレスポンスを取得してイベントに直接貼り付けましたか?これは、構文エラーを示す可能性があります。 Firebugのイベントタブのレスポンスは、Netタブの – aldrin

答えて

0

次のコードを使用して解決してください。

context.Response.ContentType = "application/json"; 

DateTime start = new DateTime(1970, 1, 1); 
DateTime end = new DateTime(1970, 1, 1); 

start = start.AddSeconds(double.Parse(context.Request.QueryString["start"])); 
end = end.AddSeconds(double.Parse(context.Request.QueryString["end"])); 

List<EventClass> listCalender = EventDAL.getEvents(start, end); 

System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer(); 
context.Response.Write(js.Serialize(listCalender)); 
0

がいくつか観測されている。..イベントデータを呼び出すために、次のコード(ASHXファイル)を使用しています:名の前後

二重引用符と価値は私のために働く。 "id": "1"。コード内の名前には二重引用符がなく、値は一重引用符で囲まれています。二重引用符で試してください

開始日と終了日の値は秒単位で指定する必要があります。 ConvertToTimestampが秒またはミリ秒を返すかどうかはわかりません。また、この値も二重引用符で囲む必要があります。

あなたは上記の提案を試して、彼らがあなたのために働くかどうか確認できますか?

+0

まず試してみましょう。 –

+0

私は試しましたが、上記の解決方法を説明したように動作しません。 –

+0

私のためにも動作しません –

関連する問題