Kendo UI MVVM example with REST URL
by valchev
HTML
<script src="http://cdn.kendostatic.com/2012.2.710/js/kendo.all.min.js"></script>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.2.710/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.2.710/styles/kendo.default.min.css">
<div id="MemberSongs" >
<label for="artist">Artist Name:</label>
<input id="artist" type="text" class="k-textbox" data-bind="value: artistFilter" />
<label for="title">Song Title:</label>
<input id="title" type="text" class="k-textbox" data-bind="value: titleFilter" />
<div style="width: 100%">
<label for="url">Url:</label>
<input id="url" type="text" readonly="true" data-bind="value: Url" style="width: 90%"/>
</div>
<div id="SongGrid" style="height: 800px">
</div>
</div>
JavaScript
var viewModel = kendo.observable({
artistFilter: "",
titleFilter: "",
genderFilter: "",
baseUrl: 'http://www.letsdokaraoke.com/api/MemberSongs?format=json&memberid=1',
readUrl: "",
artistFilterUrl: function() {
if (this.get("artistFilter") == "") {
return "";
}
return "&artist=" + this.get("artistFilter");
},
titleFilterUrl: function() {
if (this.get("titleFilter") == "") {
return "";
}
return "&title=" + this.get("titleFilter");
},
Url: function() {
console.log("ViewModel Url");
this.set("readUrl", this.get("baseUrl") + this.artistFilterUrl() + this.titleFilterUrl());
this.gridSource.read();
return this.get("readUrl");
},
gridSource: new kendo.data.DataSource({
transport: {
read: {
url: function() {
console.log("read url");
return viewModel.readUrl;
},
dataType: "jsonp",
async: false
}
},
schema: {
data: "songs",
total: "count",
model: {
fields: {
Artist: {
type: "string"
},
Title: {
type: "string"
},
Category: {
type: "string"
},
Gender: {
type: "string"
},
CatalogNumber: {
type: "string"
}
}
}
},
page: 1,
pageSize: 50,
serverPaging: true,
serverFiltering: true,
serverSorting: true
})
});
// Specify grid parameters programmatically
$('#SongGrid').kendoGrid({
dataSource: viewModel.gridSource,
autoBind: false,
...