Sorry I misunderstood what you meant by data binding. I modified the event and now it is correctly seeding the value. We have another event handler for deleting rows, here's the entire igGrid definition:
$.ced.ig.grid({
id: "igGridCarriers",
allowPaging: false,
allowHiding: false,
allowUndoRedo: false,
emptyDataText: "THERE ARE NO CARRIERS AVAILABLE. CLICK TO ADD A CARRIER.",
primaryKey: "Id",
columns: [
{ key: "Id", dataType: "number", hidden: true },
{ key: "CarrierDescription", dataType: "string", headerText: "Description" },
{ key: "StandardCarrierAlphaCode", dataType: "string", headerText: "AlphaCode" },
{ key: "Display", dataType: "string", headerText: "Display", unbound: true, template: "${StandardCarrierAlphaCode} - ${CarrierDescription}" },
{ key: "SortOrder", dataType: "number", hidden: true },
{ key: "CreatedBy", dataType: "number", hidden: true },
{ key: "CreatedDate", dataType: "date", hidden: true },
{ key: "UpdatedBy", dataType: "number", hidden: true },
{ key: "UpdatedDate", dataType: "date", hidden: true },
{
key: "Actions",
dataType: "string",
headerText: "",
width: "148px",
align: "center",
template: "×",
unbound: true
}
],
features: [
{
name: "Filtering",
columnSettings: [
{ columnKey: "Display", allowFiltering: false },
{ columnKey: "Actions", allowFiltering: false },
]
},
{
name: "Sorting",
columnSettings: [
{ columnKey: "Display", allowSorting: false },
{ columnKey: "Actions", allowSorting: false },
]
},
{
name: "Updating",
editMode: "cell",
autoCommit: false,
enableAddRow: true,
enableDeleteRow: false,
columnSettings: [
{ columnKey: "Display", readOnly: true },
{ columnKey: "Actions", readOnly: true }
],
rowAdding: function (e, ui) {
ui.values.CreatedDate = $.ig.formatter(ui.values.CreatedDate || new Date(), "date", "MM/dd/yyyy h:mm:ss tt", true, true, null);
ui.values.CreatedBy = ui.values.CreatedBy || 1;
ui.values.UpdatedDate = $.ig.formatter(new Date(), "date", "MM/dd/yyyy h:mm:ss tt", true, true, null);
ui.values.UpdatedBy = 1;
},
rowAdded: function (e, ui) {
var original = ui;
ui.owner.grid.saveChanges(function (record, status, response) {
ui.owner.updateRow(original.rowID, record);
original.owner.grid.dataBind();
});
},
editCellEnding: function (e, ui) {
if (ui.rowAdding) {
return;
}
if (ui.update === false) {
return false;
}
var row = ui.owner.grid.findRecordByKey(ui.rowID);
row.CreatedDate = $.ig.formatter(row.CreatedDate || new Date(), "date", "MM/dd/yyyy h:mm:ss tt", true, true, null);
row.CreatedBy = row.CreatedBy || 1;
row.UpdatedDate = $.ig.formatter(new Date(), "date", "MM/dd/yyyy h:mm:ss tt", true, true, null);
row.UpdatedBy = 1;
ui.owner.updateRow(ui.rowID, row);
},
editCellEnded: function (e, ui) {
if (ui.rowAdding) {
return;
}
ui.owner.grid.dataSource.saveChanges();
}
}
],
restSettings: {
create: {
batch: false,
template: $.ced.createUri("/api/carrier"),
url: $.ced.createUri("/api/carrier")
},
update: {
batch: false,
template: $.ced.createUri("/api/carrier/${Id}"),
url: $.ced.createUri("/api/carrier")
},
remove: {
batch: false,
template: $.ced.createUri("/api/carrier/${Id}"),
url: $.ced.createUri("/api/carrier")
}
},
dataSource: $.ced.createUri("/api/carrier")
});
Our remove template is setup for deleting items but this is what we see: DELETE /admin/api/carrier/$%7BId%7D HTTP/1.1 The template is escaping the values instead of seeding it with the ID. Updates work great! What gives?