Hi,
I have a few columns defined that I don't want the user to change.
When they click a button, it calls a service which returns data. I want to update the columns with this data.
The problem is, if they're set to read-only, I can't change them, and the databound event never fires
.Events(e => e.DataBound("dataBound"))
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(p => p.SnapshotDefinitionID);
//model.Field(p => p.NextSnapshotQueueID).Editable(false);
//model.Field(p => p.NextSnapshotQueueTime).Editable(false);
model.Field(p => p.LastSnapshotQueueID).Editable(false);
model.Field(p => p.LastSnapshotQueueTime).Editable(false);
model.Field(p => p.NextScheduleID).Editable(false);
model.Field(p => p.NextScheduleTime).Editable(false);
model.Field(p => p.LastScheduleID).Editable(false);
model.Field(p => p.LastScheduleTime).Editable(false);
model.Field(p => p.SnapshotQueueCount).Editable(false);
model.Field(p => p.ScheduleCount).Editable(false);
//model.Field(p => p.Client).DefaultValue(
// ViewData["defaultClient"] as DropDownListViewModel);
})
.Create(update => update.Action("BulkCreate", "SnapshotDefinition"))
.Read(read => read.Action("BulkRead", "SnapshotDefinition", new { clientId = @Request["ClientID"], snapshotDefinitionID = @Request["SnapshotDefinitionID"] }))
.Update(update => update.Action("BulkUpdate", "SnapshotDefinition"))
.Destroy(update => update.Action("BulkDestroy", "SnapshotDefinition"))
function createSnapshot(e) {
window.grid = $("#grid").data("kendoGrid");
window.dataItem = window.grid.dataItem($(event.srcElement).closest("tr"));
//alert(grid);
if (dataItem.NextSnapshotQueueID && dataItem.NextSnapshotQueueID != 0 && dataItem.CurrentPercentageComplete == 0) {
$.ajax({
url: "/SnapshotQueue/CancelSnapshotQueue",
//send current record ID to the server
data: { SnapshotQueueID: dataItem.NextSnapshotQueueID },
success: function (data) {
//update the current dataItem with the received data from the server
window.dataItem.set('NextSnapshotQueueID', '0');
window.dataItem.set('NextSnapshotQueueTime', '');
}
});
} else {
if (dataItem.CurrentPercentageComplete == 0) {
$.ajax({
url: "/SnapshotDefinition/CreateSnapshot",
//send current record ID to the server
data: { SnapshotDefinitionID: window.dataItem.SnapshotDefinitionID },
success: function (data) {
//update the current dataItem with the received data from the server
if (data['NextSnapshotQueueID']) {
window.dataItem.set('NextSnapshotQueueID', data['NextSnapshotQueueID']);
window.dataItem.set('NextSnapshotQueueTime', kendo.parseDate(data['NextSnapshotQueueTime']));
}
//for (var property in data) {
// dataItem.set(property, data[property]);
//}
}
});
}
}
}
function dataBound(e) {
var rows = this.table.find("tr[role='row']");
for (var i = 0; i < rows.length; i++) {
var model = this.dataItem(rows[i]);
if (model.NextSnapshotQueueID != 0 && model.CurrentPercentageComplete == 0) {
$(rows[i]).find(".k-grid-CreateSnapshot").contents().last()[0].textContent = 'Cancel Queued Snapshot';
}
if (model.NextSnapshotQueueID != 0 && model.CurrentPercentageComplete != 0) {
$(rows[i]).find(".k-grid-CreateSnapshot").contents().last()[0].textContent = '';
$(rows[i]).find(".k-grid-CreateSnapshot").width(100);
$(rows[i]).find(".k-grid-CreateSnapshot").removeClass('k-button');
$(rows[i]).find(".k-grid-CreateSnapshot").kendoProgressBar({
value: model.CurrentPercentageComplete,
max: 100
});
}
}
}