Jquery 剑道UI网格WebMethod JSON
我知道已经有很多了。 然而,我已经尝试了几十个SO帖子/论坛/剑道UI站点,但仍然无法让它工作。在这件事上我已经无能为力了,任何帮助都将不胜感激 以下是我的数据源声明:Jquery 剑道UI网格WebMethod JSON,jquery,asp.net,json,kendo-grid,webmethod,Jquery,Asp.net,Json,Kendo Grid,Webmethod,我知道已经有很多了。 然而,我已经尝试了几十个SO帖子/论坛/剑道UI站点,但仍然无法让它工作。在这件事上我已经无能为力了,任何帮助都将不胜感激 以下是我的数据源声明: var dataSource = new kendo.data.DataSource({ transport: { read: function(options) { $.ajax( {
var dataSource = new kendo.data.DataSource({
transport: {
read: function(options) {
$.ajax( {
type: "POST",
url: "DepartmentHome.aspx/GetMembers",
data: options.data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
options.success(msg.d);
alert(msg.d);
}
});
}
},
pageSize: 20,
schema: {
model: {
fields: {
FirstName: { validation: { required: true} },
LastName: { validation: { required: true} }
}
}
}
});
[WebMethod]
public static string GetMembers()
{
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(new { FirstName = "John", LastName = "Smith" });
return json;
}
以下是我使用数据源的网格声明:
$("#grid").kendoGrid({
dataSource: dataSource,
scrollable: true,
groupable: false,
sortable: true,
pageable: {
refresh: true,
pageSizes: true
},
height: 430,
toolbar: ["create"],
columns: [
{ field: "FirstName", title: "First Name", width: "100px" },
{ field: "LastName", title: "Last Name", width: "100px" },
{ command: ["edit", "destroy"], width: "160px" }
],
editable: {
mode: "popup",
confirmation: "Are you sure?"
}
});
以下是我在datasource声明中调用的WebMethod背后的代码:
var dataSource = new kendo.data.DataSource({
transport: {
read: function(options) {
$.ajax( {
type: "POST",
url: "DepartmentHome.aspx/GetMembers",
data: options.data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
options.success(msg.d);
alert(msg.d);
}
});
}
},
pageSize: 20,
schema: {
model: {
fields: {
FirstName: { validation: { required: true} },
LastName: { validation: { required: true} }
}
}
}
});
[WebMethod]
public static string GetMembers()
{
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(new { FirstName = "John", LastName = "Smith" });
return json;
}
我知道它正在点击WebMethod,因为我在数据源中输入的警报显示了正确的数据:
使用firebug时,响应头如下所示:
实际响应如下所示:但是,网格不显示数据,如下所示: 注意:出于某种原因,网格认为它在右下角有39个项目 我错过了什么明显的东西吗? 有更简单的方法吗?使用数据:“d”而不是数据:选项。数据
并为模式定义中的两个字段添加字符串作为数据类型。您的代码看起来不错。在你的成功功能中只需要一个改变 更改代码,如下所示:
success: function (msg) {
options.success($.parseJSON(msg.d));
}
$.parseJSON将把json字符串转换为对象