0

私はFullCalendar(バージョン1.5.1).netWebフォームアプリケーションで完全に機能しています。asp.net-mvc新しいアプリケーションにバージョン1.5.3をデプロイしようとしています。何らかの理由で、動的に提供されたときにイベントを表示できません。

各イベントを完全に制御(色、境界線、属性など)JSONする必要があり、関連するすべての詳細を含む文字列を渡します。JSON結果を手動で入力するevents:と、期待どおりに表示されます。しかし、動的に設定しようとすると、何も得られません。

簡単なテストのために、以下に説明するように、データの呼び出しの開始期間と終了期間をハードコーディングしました。

$.ajax({
    url: rootUrl + "../Schedule/GetCal?&start=1341129400&end=1344146400",
    type: 'POST'
}).success(function(data){
    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,basicDay'
        },
        titleFormat: { day: '' },
        defaultView: _thisView,
        events: [data]
    });

data以下は、 Chromeからコピーされた値です。

{id:"5BFAA9C3-9437-49B0-A657-5DA47CDEA409",projectId:"5BFAA9C3-9437-49B0-A657-5DA47CDEA409",title:"Orem City Parking Lot",start:"2012-07-11",end:"",allDay:"true",type:"goal",textColor:"white",backgroundColor:"green",borderColor:"black",crew:""},
{id:"33910A42-C5F0-42FA-AB36-C315BDDAF964",projectId:"33910A42-C5F0-42FA-AB36-C315BDDAF964",title:"Thanksgiving Point - Buster",start:"2012-07-28",end:"",allDay:"true",type:"goal",textColor:"white",backgroundColor:"green",borderColor:"black",crew:""}

同じ情報を取得して、元の呼び出しを次のように変更した場合:

    $.ajax({
    url: rootUrl + "../Schedule/GetCal?&start=1341129400&end=1344146400",
    type: 'POST'
}).success(function(data){
    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,basicDay'
        },
        titleFormat: { day: '' },
        defaultView: _thisView,
        events: [
           {id:"5BFAA9C3-9437-49B0-A657-5DA47CDEA409",projectId:"5BFAA9C3-9437-49B0-A657-5DA47CDEA409",title:"Orem City Parking Lot",start:"2012-07-11",end:"",allDay:"true",type:"goal",textColor:"white",backgroundColor:"green",borderColor:"black",crew:""},
           {id:"33910A42-C5F0-42FA-AB36-C315BDDAF964",projectId:"33910A42-C5F0-42FA-AB36-C315BDDAF964",title:"Thanksgiving Point - Buster",start:"2012-07-28",end:"",allDay:"true",type:"goal",textColor:"white",backgroundColor:"green",borderColor:"black",crew:""}
        ]
    });

すべてが期待どおりに表示されます。

手動で設定しても機能するのに、動的に設定しないのはなぜですか?私は何が欠けていますか?

4

3 に答える 3

1

私はついにそれを理解しました。alert(data)はとても役に立ちました。

データベースからデータを取得するときは、それを配列にフォーマットする必要があります。

この記事は、JohnのMcBlogを機能させるために重要でした。

DataTableを文字列にシリアル化する代わりにJSON、をに入れて次のようList<>に変換.ToArray()します。

DataTable projSchDt = BLL.Project.getProjectsSchedule(ccUser.CompanyId, start, end, ccUser.Id, true);
var events = new List<BLL.Event>();

foreach (DataRow row in projSchDt.Rows)
{
    events.Add(new BLL.Event(){
       id = row["id"].ToString(),
       projectId = row["projectId"].ToString(),
       title = row["title"].ToString(),
       start = row["start"].ToString(),
       end = row["end"].ToString(),
       allDay = Convert.ToBoolean(row["allDay"]),
       type = row["type"].ToString(),
       textColor = row["textColor"].ToString(),
       backgroundColor = row["backgroundColor"].ToString(),
       borderColor = row["borderColor"].ToString(),
       crew = row["crew"].ToString()
    });
}
var rows = events.ToArray();
return Json(rows, JsonRequestBehavior.AllowGet);

Bll.Eventイベントを定義するための単なるカスタムクラスです。

私は次のようにjsを変更しました:

$('#calendar').fullCalendar({
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,basicWeek,basicDay'
    },
    titleFormat: { day: '' },
    defaultView: _thisView,
    events: rootUrl + "../Schedule/GetCal"
});

現在、すべてが期待どおりに機能しています。

于 2012-07-27T17:19:46.023 に答える
0

$ .ajax()の投稿から返されるデータは、javascriptオブジェクトではなく、javascriptオブジェクトの単なる文字列表現である可能性があります。

'json'のdataTypeオプションを追加して、ajaxリクエストからjavascriptオブジェクトを返します。

$.ajax({
    url: rootUrl + "../Schedule/GetCal?&start=1341129400&end=1344146400",
    type: 'POST',
    dataType: 'json',
    success: function(data){
        $('#calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,basicWeek,basicDay'
            },
            titleFormat: { 
                day: '' 
            },
            defaultView: _thisView,
            events: data
        });
    }
});
于 2012-07-26T23:38:59.997 に答える
0

dataあなたの変数はすでに配列だと思います。だから試してみてください:

events: data

の代わりにevents: [data]

于 2012-07-26T06:28:08.623 に答える