3

したがって、Kendo が提供する外部データ ソースを使用する例に従いました。何らかの理由で、Default.aspx/GetEvents の URL を入力すると (ここで、GetEvents は Default.aspx の Web メソッドです)、代わりに Default.aspx の HTML 全体が返されます。通常の AJAX 呼び出しで webmethod を呼び出すだけです。

だから私はそれを回避する方法を見つけ、javascript 関数を呼び出すローカル データ ソース メソッドを使用します。

ここに私のコードがあります

 $(document).ready(function () {
                $("#grid").kendoGrid({
                    dataSource: {
                        data: createRandomData(),
                        schema: {
                            data: "d"
                        },
                        pageSize: 10
                    },
                    height: 250,
                    scrollable: true,
                    sortable: true,
                    filterable: true,
                    pageable: {
                        input: true,
                        numeric: false
                    },
                    columns: [
                        {
                            field: "Title",
                            title: "Title",
                            width: 100
                        },
                        {
                            field: "StartDate",
                            title: "StartDate",
                            width: 100
                        },
                        {
                            field: "Keywords",
                            width: 100
                        }
                    ]
                });
            });

これが createRandomData() が返すものの始まりです-それは有効なjsonです-すべてを貼り付けて、この質問を読めなくしたくないだけです

"d" : [
{
    "Title": "Chicago BlackHawks vs. Detroit Redwings",
    "StartDate": "9/7/2012 12:00:00 AM",
    "Keywords": "-- Select --"
},
{
    "Title": "",
    "StartDate": "1/1/1900 12:00:00 AM",
    "Keywords": "-- Select --"
}, .......

これが機能しない理由はわかりません。現在、グリッドには「読み込み中...」と表示され、コンソールエラーは発生しません。

                    function createRandomData() {
                    $.ajax({
                        type: "POST",
                        url: "MyEvents.aspx/GetEvents",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (msg) {                                
                            var rs = msg;
                            return rs;
                        }
                    });
                    return false;
                }
4

2 に答える 2

5

考えられる問題は、要素を使用するときに KendoUI が単純な JavaScript 呼び出し (AJAX なし) を想定していることですdata。JS メソッドを呼び出すとすぐに戻りますが、AJAX 呼び出しが完了するまでに少し時間がかかりますが、呼び出しが完了したときに剣道グリッドに通知されることはありません。

代わりに試すことができるのはtransport.read、 dataSource hereのオブジェクトを使用することです。このようにして、グリッドは AJAX 呼び出しで正常に動作するはずです。

編集:次のようなことを試しましたか:

dataSource: {
    transport: {
        read: function(options) {
            $.ajax({
                type: "POST",
                url: "MyEvents.aspx/GetEvents",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {                                
                    options.success(msg.d);
                }
            });
        }
     }
}
于 2012-09-06T22:01:12.750 に答える
0

おそらくスキーマ定義を変更してください:

これから

schema: {
 data: "d"
}

これに

schema: {
 model: {
  fields: {
    Title: { type: "string" },
    StartDate: { type: "string" },
    Keywords: { type: "string" }
   }
 }
}
于 2012-09-06T22:02:40.873 に答える