<!DOCTYPE html>
<html>
<head>
<title></title>
<link href="http://cdn.kendostatic.com/2013.1.319/styles/kendo.common.min.css" rel="stylesheet">
<link href="http://cdn.kendostatic.com/2013.1.319/styles/kendo.bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="style.css">
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"></script>
<script src="//code.angularjs.org/1.1.4/angular.js"></script>
<script src="http://cdn.kendostatic.com/2013.1.319/js/kendo.all.min.js"></script>
<script src="kendo.grid.csv.download.js"></script>
<script src="script.js"></script>
</head>
<body>
<div id="test-grid" data-role="grid" data-bind="source: testDataSource"
data-columns='[
{
field: "Site",
title: "Site"
} ,
{
title: "Action",
template: kendo.template($("#conditional-action-template").html())
}
]'></div>
<div id="log"></div>
<script id="conditional-action-template" type="text/x-kendo-template">
# if(FirstActionEnabled) { #
<div class='action circle' data-bind="click: firstActionClick"></div>
# } #
# if(SecondActionEnabled) { #
<div class='action square' data-bind="click: secondActionClick"></div>
# } #
</script>
</body>
</html>
(function () {
var log = (function (el) {
return function (text) {
el.html(el.html() + '<br/>' + text);
};
})($('#log'));
var viewModel = kendo.observable({
// the test data
testDataSource: new kendo.data.DataSource({
schema: {
data: function() {
return [{Site: 'Falafel Home',
FirstActionEnabled: true, SecondActionEnabled: false},
{Site: 'Kendo UI Demos',
FirstActionEnabled: false, SecondActionEnabled: true},
{Site: 'Telerik Home',
FirstActionEnabled: true, SecondActionEnabled: true}]
},
},
}),
firstActionClick: function(item){
log('First action selected for ' + item.data.Site)
},
secondActionClick: function(item){
log('Second action selected ' + item.data.Site)
}
})
// Kendo MVVM binding
kendo.bind('body', viewModel);
})()
.action{
display: inline-block;
float: left;
margin: 0 5px;
cursor: pointer;
width: 20px;
height: 20px;
}
.circle {
border-radius: 50%;
background-color: green;
}
.square {
background-color: red;
}
#log {
background-color: #eee;
margin: 20px 0;
}
var toCSV = function (gridId, ignoredTemplates) {
var csv = '';
// Get access to basic grid data
var grid = $("#" + gridId).data("kendoGrid"),
datasource = grid.dataSource,
originalPageSize = datasource.pageSize();
// Increase page size to cover all the data and get a reference to that data
datasource.pageSize(datasource.total());
var data = datasource.view();
//add the header row
for (var i = 0; i < grid.columns.length; i++) {
var title = grid.columns[i].title,
field = grid.columns[i].field;
if (typeof (field) === "undefined") { continue; /* no data! */ }
if (typeof (title) === "undefined") { title = field }
title = title.replace(/"/g, '""');
csv += '"' + title + '"';
if (i < grid.columns.length - 1) {
csv += ",";
}
}
csv += "\n";
//add each row of data
for (var row in data) {
for (var i = 0; i < grid.columns.length; i++) {
var fieldName = grid.columns[i].field,
template = grid.columns[i].template;
if (typeof (fieldName) === "undefined") { continue; }
var value = data[row][fieldName];
if (value === null) {
value = "";
} else {
if ((typeof(template) !== "undefined") && ($.inArray(fieldName.toString(), ignoredTemplates) < 0)) {
value = value.toString();
var kt = kendo.template(template.toString());
value = kt(data[row]);
} else {
value = value.toString();
}
}
value = value.replace(/"/g, '""');
csv += '"' + value + '"';
if (i < grid.columns.length - 1) {
csv += ",";
}
}
csv += "\n";
}
// Reset datasource
datasource.pageSize(originalPageSize);
return csv;
};