2013-08-07 4 views
1

Я не могу заставить свой планировщик заполнять данные, которые извлекаются из внешней функции. Это пользовательский интерфейс кендо. Я не могу получить свой календарь, чтобы показать какие-либо из приложений, которые вытаскивают из моей базы данных. У кого-нибудь есть идеи? СпасибоНаполнение Kendo Read datasource

$(function() { 
     $("#scheduler").kendoScheduler({ 
      date: new Date("2013/6/13"), 
      startTime: new Date("2013/6/13 07:00 AM"), 
      height: 600, 
      views: [ 
      "day", 
       { type: "week", selected: true }, 
       "month", 
       "agenda" 
      ], 
      timezone: "Etc/UTC", 
      dataSource: { 
       batch: true, 
       transport: { 
        read: { 
         url: "/Team/Calendar/PopulateCalendar/", 
         dataType: "json", 

        }, 
        update: { 
         url: "http://demos.kendoui.com/service/tasks/update", 
         dataType: "jsonp" 
        }, 
        create: { 
         url: "http://demos.kendoui.com/service/tasks/create", 
         dataType: "jsonp" 
        }, 
        destroy: { 
         url: "http://demos.kendoui.com/service/tasks/destroy", 
         dataType: "jsonp" 
        }, 
        parameterMap: function (options, operation) { 
         if (operation !== "read" && options.models) { 
          return { models: kendo.stringify(options.models) }; 
         } 
        } 
       }, 
       schema: { 
        model: { 

         id: "taskId", 
         fields: { 
          taskId: { from: "TaskID", type: "number" }, 
          title: { from: "Title", defaultValue: "No title", validation: { required: true } }, 
          start: { type: "date", from: "Start" }, 
          end: { type: "date", from: "End" }, 
          startTimezone: { from: "StartTimezone" }, 
          endTimezone: { from: "EndTimezone" }, 
          description: { from: "Description" }, 
          recurrenceId: { from: "RecurrenceID" }, 
          recurrenceRule: { from: "RecurrenceRule" }, 
          recurrenceException: { from: "RecurrenceException" }, 
          ownerId: { from: "OwnerID", defaultValue: 1 }, 
          isAllDay: { type: "boolean", from: "IsAllDay" } 

         } 
        } 

       }, 
       filter: { 
        logic: "or", 
        filters: [ 
         { field: "ownerId", operator: "eq", value: 1 }, 
         { field: "ownerId", operator: "eq", value: 2 } 
        ] 
       } 
      }, 
      resources: [ 
       { 
        field: "ownerId", 
        title: "Owner", 
        dataSource: [ 
         { text: "Alex", value: 1, color: "#f8a398" }, 
         { text: "Bob", value: 2, color: "#51a0ed" }, 
         { text: "Charlie", value: 3, color: "#56ca85" } 
        ] 
       } 
      ] 
     }); 

     $("#people :checkbox").change(function (e) { 
      var checked = $.map($("#people :checked"), function (checkbox) { 
       return parseInt($(checkbox).val()); 
      }); 

      var filter = { 
       logic: "or", 
       filters: $.map(checked, function (value) { 
        return { 
         operator: "eq", 
         field: "ownerId", 
         value: value 
        }; 
       }) 
      }; 

      var scheduler = $("#scheduler").data("kendoScheduler"); 

      scheduler.dataSource.filter(filter); 
     }); 
    }); 

Вот функция, из которой они извлекают данные.

public ActionResult PopulateCalendar() 
     { 
      using (var entities = new OpenRoad.Data.Repository.OpenRoadEntities()) 
      { 
       var appointments = (from e in entities.Appointments 
            where e.UserId == OpenRoad.Web.Session.UserId 

            select new Models.Calendar 
            { 
             TaskID = e.AppointmentId, 
             UserId = e.UserId ?? '1', 
             Title = e.Subject, 
             Description=e.Description, 
             Start = e.StartTimeUtc ?? DateTime.Now, 
             End = e.EndTimeUtc ?? DateTime.Now, 
             IsAllDay = false, 
             RecurrenceRule= null, 
             RecurrenceID=null, 
             RecurrenceException=null, 
             StartTimezone=null, 
             EndTimezone=null, 

            }).OrderBy(o => o.Start).ToList(); 

       return Json(appointments, JsonRequestBehavior.AllowGet); 
      }    
     } 
+1

Есть ошибки? Каково поведение? – Pluc

+0

Ошибка в моем календаре пока ничего не отображается, и мне кажется, что она должна работать правильно. –

+0

Можете ли вы опубликовать свой полный инициализатор javascript schedualer? (и источник данных, если они разделены). – Pluc

ответ

-1

Я думаю, что вам нужно DATATYPE: "JSONP" вместо "JSON"

чтения: { URL: "/ Команда/Календарь/PopulateCalendar /", DATATYPE: "JSON",

+1

no jsonp должен перейти к внешнему источнику данных. –

0

Попытайтесь определить все свои свойства на сервере, напишите первой маленькой буквой;) В качестве шага номер два вы можете удалить «schema: {model: {» block becouse это подделка ... :-D

0

Попробуйте пройти в DataSourceRequest и преобразование списка в один ,

PopulateCalendar ([DataSourceRequest] DataSourceRequest запрос)

возвращение JSON (taskModelList.ToDataSourceResult (запрос));