所以我按照 Kendo Provides 的例子要使用外部数据源,出于某种原因,当您放置 Default.aspx/GetEvents 的 URL(其中 GetEvents 是 Default.aspx 中的网络方法)时,它会返回 Default.aspx 的整个 HTML,而不是仅以正常方式调用网络方法AJAX 调用。
所以我找到了解决这个问题的方法,我使用本地数据源方法,它调用一个 javascript 函数 - 这个 javascript 函数对我在 default.aspx 中的 web 方法进行自己的 ajax 调用并获得成功响应
这是我的代码
$(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;
}
最佳答案
可能的问题是 KendoUI 在使用 data
元素时需要一个简单的 javascript 调用(没有 AJAX)。当您调用 JS 方法时,它会立即返回,但 AJAX 调用需要更长的时间才能完成,但 Kendo grid 在调用完成时永远不会收到通知。
您可以尝试使用数据源上的 transport.read
对象 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);
}
});
}
}
}
关于c# - kendo UI 网格数据源 asp webforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12308946/