Kendo/MVVM/Grid settings
HTML
<script src="http://cdn.kendostatic.com/2012.3.1315/js/kendo.all.min.js"></script>
<script src="http://include.jaydata.org/datajs-1.0.3.js"></script>
<script src="http://include.jaydata.org/jaydata.js"></script>
<script src="http://include.jaydata.org/jaydatamodules/kendo.js"></script>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.3.1315/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.3.1315/styles/kendo.default.min.css">
<div id="container">
<h1>data-editable: true</h1>
<ul>
<li>delete auto commit: false (add save/cancel toolbar buttons)</li>
<li>collect multiple edits/batch: true</li>
<li>edit: click the cell to edit</li>
</ul>
<div data-role="grid" data-sortable="true" data-bind="source: taskSource, editable:isEditable" data-columns='["Todo", "Completed", {"command": [ "destroy"] }]'
data-toolbar='["create","save","cancel"]' >
</div>
<h1>data-editable: popup</h1>
<ul>
<li>delete auto commit: true</li>
<li>collect multiple edits/batch: false</li>
<li>edit: add edit button</li>
</ul>
<div data-role="grid" data-sortable="true" data-editable="popup" data-bind="source: taskSource" data-columns='["Todo", "Completed", {"command": [ "destroy","edit"] }]'
data-toolbar='["create"]'>
</div>
<h1>data-editable: inline</h1>
<ul>
<li>delete auto commit: true</li>
<li>collect multiple edits/batch: false</li>
<li>edit: add edit button, full row is editable</li>
</ul>
<div data-role="grid" data-sortable="true" data-editable="inline" data-bind="source: taskSource" data-columns='["Todo", "Completed", {"command": [ "destroy","edit"] }]'
data-toolbar='["create"]'>
</div>
</div>
CSS
.product-view {
float: left;
width: 320px;
margin: 5px;
padding: 3px;
-moz-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
-webkit-box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1);
border-top: 1px solid rgba(0, 0, 0, 0.1);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
}
.product-view dl {
margin: 10px 0;
padding: 0;
min-width: 0;
}
.product-view dt, dd {
float: left;
margin: 0;
padding: 0;
height: 30px;
line-height: 30px;
}
.product-view dt {
clear: left;
padding: 0 5px 0 15px;
text-align: right;
opacity: 0.6;
width: 100px;
}
.k-listview {
border: 0;
padding: 0;
min-width: 0;
}
.k-listview:after, .product-view dl:after {
content:".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.edit-buttons {
text-align: right;
padding: 5px;
min-width: 100px;
border-top: 1px solid rgba(0, 0, 0, 0.1);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
}
.k-toolbar, #listView, .k-pager-wrap {
width: 660px;
margin: 0 auto;
-webkit-border-radius: 11px;
-moz-border-radius: 11px;
border-radius: 11px;
}
#listView {
width: 674px;
}
span.k-invalid-msg {
position: absolute;
margin-left: 6px;
}
JavaScript
$(function () {
var Task = $data.define("Task", {
Todo: String,
Completed: Boolean
});
var viewModel = kendo.observable({
taskSource: Task.asKendoDataSource(),
isEditable:true,
addNew: function () {
$('#listView').getKendoListView().add();
//viewModel.taskSource.add();
},
});
kendo.bind($("#container"), viewModel);
//add some data if db is empty
Task.readAll()
.then(function (items) {
if (items.length == 0) {
return Task.addMany([{ Todo: 'Include script files', Completed: true },
{ Todo: 'Define model', Completed: true },
{ Todo: 'Connect data to grid' }]);
}
}).then(function() {
viewModel.taskSource.fetch();
});
});