2016-03-29 4 views
0

je lis que je peux faire quelque chose comme çaGnu GPL de DHTMLX ASP.net C de # - Comment lire les données de la base de données (JSON) renvoyée par une classe

scheduler.parse([ 
    { start_date:"2013-05-13 6:00", end_date:"2009-05-13 8:00", text:"Event 1"}, 
    { start_date:"2013-06-09 6:00", end_date:"2009-06-09 8:00", text:"Event 2"} 
],"json"); 

sur http://docs.dhtmlx.com/scheduler/api__scheduler_parse.html

mais je ne veux pas placer manuellement toutes les données, je veux lire les données de ma base de données

donc ce que je fait est que j'ai cette méthode sur Data.ashx

public string getJson(int ID) 
     { 
      XXXContext db = new XXXContext(); 
      var YYYY = db.Y.Where(p => p.YYYID == ID).Include(p => p.ZZZZ).ToList(); 
      List<CalendarEvent> cEvent = new List<CalendarEvent>(); 

      foreach (var evnt in YYYYY) 
      { 
       cEvent.Add(new CalendarEvent() { id = evnt.AAAAID, text = evnt.PPPPP.FirstName.ToString() + " " + evnt.PPPPP.MiddleName.ToString() + " " + evnt.PPPPP.LastName.ToString() + "<br />" + 
        evnt.Reason.ToString() + "<br />" + evnt.Details.ToString(), start_date = evnt.XXXXXDateTime??DateTime.Now, end_date = evnt.XXXXXDateTime??DateTime.Now }); 
      } 
      IEnumerable<CalendarEvent> toIEnum = cEvent; 

      string json = new JavaScriptSerializer().Serialize(toIEnum); 
      return json; 
     } 

Ce retourne une sortie au format JSON

, mais je ne sais pas quoi faire <

ce que je suis sur mon fichier html, que j'ai appelé en utilisant IFrame sur ma classe ASPX

<script type="text/javascript" charset="utf-8"> 
    function init() { 
     scheduler.config.multi_day = true; 

     scheduler.config.xml_date="%Y-%m-%d %H:%i"; 
     scheduler.init('scheduler_here',new Date(2015,0,10),"week"); 
     scheduler.load("../../Data.ashx"); 
    } 

Répondre

0

Vous devez spécifier le format des données dans les arguments de scheduler.load, sinon il attendre xml par défaut:

scheduler.load("../../Data.ashx", "json"); 

Notez également que le client s'attend à ce que les dates start_date/end_date soient sérialisées au format spécifié dans scheduler.config.xml_date config ("% Y-% m-% d% H:% i" selon votre code) alors que JavaScriptSerializer stringify DateTime en quelque chose de ce qui suit:

"start_date": "/Date(1355496152000)/" 

il y a deux solutions de contournement possibles, par exemple, vous pouvez remplacer une méthode qui analyse les dates et les analyser manuellement:

scheduler.templates.xml_date = function (dateString) { 
    var timestamp = dateString.substring(6, dateString.length - 2); 
    return new Date(timestamp * 1); 
}; 

scheduler.load("../../Data.ashx", "json");