2010-06-07 60 views
3

我一直在嘗試使用以下代碼使用對ASHX頁面的調用將一些事件添加到fullCalendar。來自asp.net的FullCalendar事件ASHX頁面不顯示

頁腳本:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#calendar').fullCalendar({ 
      header: { 
       left: 'prev,next today', center: 'title', right: 'month, agendaWeek,agendaDay' 
      }, 
      events: 'FullCalendarEvents.ashx' 

     })     
    }); 
</script> 

C#代碼:

public class EventsData 
{ 
    public int id { get; set; } 
    public string title { get; set; } 
    public string start { get; set; } 
    public string end { get; set; } 
    public string url { get; set; } 
    public int accountId { get; set; } 
} 

public class FullCalendarEvents : IHttpHandler 
{ 

    private static List<EventsData> testEventsData = new List<EventsData> 
    { 
     new EventsData {accountId = 0, title = "test 1", start = DateTime.Now.ToString("yyyy-MM-dd"), id=0}, 
     new EventsData{ accountId = 1, title="test 2", start = DateTime.Now.AddHours(2).ToString("yyyy-MM-dd"), id=2} 
    }; 

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

    private string GetEventData() 
    { 
     List<EventsData> ed = testEventsData; 
     StringBuilder sb = new StringBuilder(); 

     sb.Append("["); 

     foreach (var data in ed) 
     { 
      sb.Append("{"); 
      sb.Append(string.Format("id: {0},", data.id)); 
      sb.Append(string.Format("title:'{0}',", data.title)); 
      sb.Append(string.Format("start: '{0}',", data.start)); 
      sb.Append("allDay: false"); 
      sb.Append("},"); 
     } 
     sb.Remove(sb.Length - 1, 1); 
     sb.Append("]"); 
     return sb.ToString(); 
    } 


} 

的ASHX頁面被調用和returnd以下數據:

[{ID:0,標題:」測試1',開始:'2010-06-07',allDay:false},{id:2,title:'test 2',start:'2010-06-07',allDay:false}]

對ASHX頁面的調用不顯示任何結果,但是如果我將直接返回的值粘貼到正確顯示的事件中。我是我一直試圖讓這個代碼工作一天,我不明白爲什麼事件沒有設置。

任何幫助或建議如何我能得到這個工作,將不勝感激。

史蒂夫

回答

0

讓我們看看我們所知道的,並消除可能:

  • The ASHX page gets called and returnd the ... data:

    所以服務器端的部分工作得很好,而且代碼叫出到服務器端工作中。

  • I paste the values returned directly into the events it displays correctly.

    所以處理響應的代碼正常工作。

從邏輯上講,我們在這裏看到,連接您的服務器響應您的日曆輸入不能正常工作的代碼。不幸的是,我沒有使用jQuery fullCalendar方法,但也許你錯過了一個回調聲明?

+0

感謝您的答覆喬爾, 我已經創建了一個基於從它的代碼fullcalendar腳本的文檔: $( '#日曆')fullCalendar({ 事件: 「/myfeed.php」 }); 用我的ascx替換php頁面,所以會有預期不需要回調,除非php頁面處理不同。 – 2010-06-08 10:55:35

0

我認爲這可能與您的日期值有關。

+0

感謝您的支持,但是如果與日期相關,我會期望我在日曆中直接粘貼的結果值不起作用。 – 2010-06-09 11:06:14

1

Steve, 我遇到了類似的情況 - 如果JSON直接在fullCalendar調用中,它會呈現事件,但它不會呈現來自外部URL的identicla JSON。我終於通過修改JSON來實現它,以便「id」,「title」,「start」,「end」和「allDay」在他們周圍引用引號。

所以不是這個(使用您的示例JSON): [{id:0,title:'test 1',start:'2010-06-07',allDay:false},{id:2,標題:'test 2',開始:'2010-06-07',allDay:false}]

...我有這個: [{「id」:0,「title」:「test 1」 ,「開始」:「2010-06-07」,「allDay」:false},{「id」:2,「title」:「test 2」,「start」:「2010-06-07」,「allDay 「:false}]

現在,爲什麼它在本地但不是遠程工作,我不能說。

0

FullCalendar events from asp.net ASHX page not displaying是該問題的正確解決方案。

而且我使用長格式的日期。

而且@Steve代替StringAppending我們可以使用: -

System.Web.Script.Serialization.JavaScriptSerializer oSerializer = 
new System.Web.Script.Serialization.JavaScriptSerializer(); 
String sJSON = oSerializer.Serialize(evList); 

evList是您含有具有像ID基本屬性的所有事件列表,開始,結束,描述,阿迪等。

我知道這個線程是一箇舊線程,但這對其他用戶會有所幫助。

只是整理所有的答案。

3

如果有人發現這個問題。我嘗試了所有上述解決方案,但都沒有工作。 對我來說,問題是通過使用舊版本的jquery解決的。我從1.5.2版本切換它被列入fullcalendar包版本1.3.2

+0

+1非常感謝。它對我很有幫助 – 2014-05-15 10:15:20

1

你的JSON數據丟失end項目:

{id: 0,title:'test 1',start: '2010-06-07',end: '2010-06-07',allDay: false} 
0

我這個問題掙扎並使用.ashx的解決它處理程序如下

我的回報類是什麼樣子......

public class Event 
    { 
     public Guid id { get; set; } 
     public string title { get; set; } 
     public string description { get; set; } 
     public long start { get; set; } 
     public long end { get; set; } 
     public bool allDay { get; set; } 
    } 

哪裏DateTime值使用轉換爲長值...

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

而且的ProcessRequest看起來像......

public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType = "text/html"; 
     DateTime start = new DateTime(1970, 1, 1); 
     DateTime end = new DateTime(1970, 1, 1); 
     try 
     { 
      start = start.AddSeconds(double.Parse(context.Request.QueryString["start"])); 
      end = end.AddSeconds(double.Parse(context.Request.QueryString["end"])); 
     } 
     catch 
     { 
      start = DateTime.Today; 
      end = DateTime.Today.AddDays(1); 
     } 
     List<Event> evList = new List<Event>(); 
     using (CondoManagerLib.Linq.CondoDataContext Dc = new CondoManagerLib.Linq.CondoDataContext(AppCode.Common.CGlobals.DsnDB)) 
     { 
      evList = (from P in Dc.DataDailySchedules 
         where P.DateBeg>=start && P.DateEnd<=end 
         select new Event 
         { description = P.Description, 
          id = P.RecordGuid, 
          title = P.Reason, 
          start = ConvertToTimestamp(P.DateBeg), 
          end = ConvertToTimestamp(P.DateEnd), 
          allDay = IsAllDay(P.DateBeg, P.DateEnd) 
         }).ToList(); 
     } 
     System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
     String sJSON = oSerializer.Serialize(evList); 
     context.Response.Write(sJSON); 
    } 

我的文檔準備...

> $(document).ready(function() { 
>    $('#calendar').fullCalendar({ 
>     header: { left: 'title', center: 'prev,today,next', right: 'month,agendaWeek,agendaDay' }, 
>     editable: false, 
>     aspectRatio: 2.1, 
>     events: "CalendarEvents.ashx", 
>     eventRender: function (event, element) { 
>      element.qtip({ 
>       content: event.description, 
>       position: { corner: { tooltip: 'topLeft', target: 'centerLeft'} }, 
>       style: { border: { width: 1, radius: 3, color: '#000'}, 
>        padding: 5, 
>        textAlign: 'center', 
>        tip: true, 
>        name: 'cream' 
>       } 
>      }); 
>     } 
>    }) 
>   }); 

的qTip pluging可以在http://craigsworks.com/projects/qtip/

希望這有助於找到。

+0

我想要做同樣的事情,但是使用日期範圍和dow(星期幾)。我能夠使用startDate和endDate顯示日曆,但是如何使用ashx處理程序實現範圍功能? – sohaiby 2015-08-02 13:10:06