this.taskGridOptions = {
data: self.tasks,
scrollable: false,
sortable: true,
persistSelection: true,
selectable: "row",
change: function (grid) {
console.debug("Change grid...");
self.checkForCheckedRows();
},
dataBound: function () {
this.table.find(".checked-row").click(function () {
var checked = this.checked;
var grid = $("#taskGrid").data("kendoGrid");
// Find the row that was checked
row = $(this).closest("tr"),
// Set the data item's IsSelected property
dataItem = grid.dataItem(row);
dataItem.IsSelected = checked;
var realItem = ko.utils.arrayFirst(self.tasks(), function (item) {
if (item.Id() == dataItem.Id) {
return true;
}
});
// And set it's IsSelected property (this field isn't bound)
if (realItem)
realItem.IsSelected = checked;
// Update the text alerting how many have been checked
self.checkForCheckedRows();
// debug
console.debug(JSON.stringify(self.tasks()));
});
},
noRecords: {
template: "<div class='no-grid-data'> 'No records found, please refine your search.'</span>"
},
pageable: {
pageSize: 20
},
columns: [
{
headerTemplate: "<input id='check-all-box', type='checkbox', class='check-box' />",
field: "IsSelected",
type: "boolean",
width: 45,
sortable: false,
template: "<input type='checkbox' class='checkbox checked-row' />",
},
{ field: "Id", title: "Task Id" },
{ field: "TicketId", title: "Ticket Ref" },
{ field: "LeadId", title: "Lead Id" },
{
field: "UserId", title: "User",
template: function (data) {
return self.getUsernameByUserId(data.UserId);
}
},
{
field: "ResultCodeId", title: "Result Code",
template: function (data) {
return self.getResultcodeById(data.ResultCodeId);
}
},
{
field: "DueDate", title: "Due Date",
template: function (data) {
return parseJsonDate(data.DueDate).toLocaleString();
}
},
{
field: "Status", title: "Task Status",
template: function (data) {
if (data.Status == InteractionStatusType.Closed)
return "Closed";
else if (data.Status == InteractionStatusType.InProgress)
return "In Progress";
else if (data.Status == InteractionStatusType.Open)
return "Open";
}
},
{
field: "ChannelType", title: "Channel Type",
template: function (data) {
if (data.ChannelType == InteractionTypes.Call)
return "Call";
else if (data.ChannelType == InteractionTypes.Email)
return "Email";
else if (data.ChannelType == InteractionTypes.Chat)
return "Chat";
}
},
{
command: { text: "View Details", click: showDetails, title: " ", width: "180px" },
}
]
}
function wnd() {
$("#details")
.kendoWindow({
title: "Customer Details",
modal: true,
visible: false,
resizable: false,
width: 300
}).data("kendoWindow");
}
detailsTemplate = kendo.template($("#template").html());
function showDetails(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
wnd.content(detailsTemplate(dataItem));
wnd.center().open();
}
<script id="template" type="text/x-kendo-template">
<div id="taskInfo-dialog">
<label class="form-label">
Subject:
<span>#=Description#</span>
</label>
<label class="form-label">
Notes:
<span>#=Notes#</span>
</label>
</div>
</script>