var investorDataSource = new kendo.data.DataSource({
type: "json",
transport: {
read: {
url: "http://localhost//XXXX?Name=^" + $("#searchfor").val(),
dataType: "json"
},
parameterMap: function (options) {
return {
pageindex: options.page,
pagesize: options.take,
//orderby:options.sort[0].field
orderby: convertSort(options.sort)
}
}
},
schema: {
data: function (result) {
return result.Items || result;
},
total: function (result) {
//Note: this is != to the total no of records, but should work
return (result.PageSize * result.PageCount) || result.length || 0;
}
},
serverPaging: true,
serverSorting: true,
sort: { field: "Name", dir: "asc" },
serverFiltering: true,
pageSize: 10
});
{
field:
"tblCategory"
,
title:
"Category"
}
I'm unable to load any data from my server into a grid that I'm trying to setup for simple paging without resorting to using the solution posted in the Kendo Grid Forum that uses a jquery ajax request to directly populate the "data" member directly of the kendo.data.DataSource. I am returning a simple json response that contains an array and a count to support paging (for example):
{
"artists"
:[{
"ID"
:4471,
"Name"
:"10
Years
","
Gender
":"
Male
","
Category
":"
Pop/Rock
"},{"
ID
":4391,"
Name
":"
10,000
Maniacs
","
Gender
":"
Female
","
Category
":"
Pop/Rock
"},{"
ID
":15,"
Name
":"
10cc
","
Gender
":"
Male
","
Category
":"
Pop/Rock
"},"
count":2004}
This is my 1st cut at a datasource, and I've verified the server gets called and returns the json as above, but nothing displays in the grid:
var
artistSource =
new
kendo.data.DataSource({
transport: {
read: {
url:
"http://localhost:53596/api/Artists?format=json"
,
dataType:
"jsonp"
},
schema: {
data:
"artists"
,
total:
"count"
,
model: {
fields: {
ID: { type:
"number"
},
Name: { type:
"string"
},
Gender: { type:
"string"
},
Category: { type:
"string"
}
}
}
},
page: 1,
pageSize: 50,
serverPaging:
true
,
serverFiltering:
true
,
serverSorting:
true
}
});
Following the workaround above, this datasource below works. From what I can tell, I'm following the examples, but I'm not able to get the datasource populated properly, and I'd really appreciate any help!
// This is the ajax call that is used to populate the data
// member in the dataSource as described in the workaround in the forums:
function
GetArtists() {
var
_resData;
$.ajax({
type:
'GET'
,
url:
'http://localhost:53596/api/Artists?format=json'
,
dataType:
'json'
,
success:
function
(data) {
_resData = data.artists;
},
data: {},
async:
false
});
return
_resData;
}
// This datasource populates the data array via a jquery ajax call,
// bypassing the configuration as done in the original datasource.
var
artistSource2 =
new
kendo.data.DataSource({
data: GetArtists(),
schema: {
model: {
fields: { ID: { type:
"number"
}, Name: { type:
"string"
}, Gender: { type:
"string"
}, Category: { type:
"string"
}
}
}
}
});
// If I use artistSource2 (the workaround), the grid gets populated,
// but if I use artistSource, nothing shows up in the grid.
$(
'#Artists'
).kendoGrid({
dataSource: artistSource2,
height: 600,
columns: [{ field:
"ID"
}, { field:
"Name"
}, { field:
"Gender"
}, { field:
"Category"
}],
pageable:
true
});