我按照 Kendo 提供的示例 使用外部数据源,但是当你输入 Default.aspx/GetEvents 的 URL(其中 GetEvents 是 Default.aspx 中的一个 WebMethod)时,它返回整个 Default.aspx 的 HTML,而不是正常的 AJAX 调用。
因此,我找到了一种解决方法,使用本地数据源方法,该方法调用一个 JavaScript 函数 - 这个 JavaScript 函数会自己进行 AJAX 调用我的 default.aspx 中的 WebMethod,并得到一个成功的响应。
以下是我的代码:
$(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;
}