Background:
I have a jQuery Kendo grid with below columns where I am allowing users to do inline editing in batch mode.
columns: [
{ field: "MedRecRcvd", title: "Med Rec Rcvd", width: "30px", editor: medRecRcvdDropDownEditor, template: "#=MedRecRcvd.MedRecRcvdName#" },
{
field: "dateReceived", title: "Date Rcvd", format: "{0:dd MMM yyyy}", width: 30, editor: function (container, options) {
var input = $("<input />");
input.attr("name", options.field);
input.appendTo(container);
input.kendoDatePicker({
});
}
}]
Requirement: MedRecRcvd dropdown has 3 possible values. One of the requirement is when the selected value for MedRecRcvd is selected as "Yes" then set "dateReceived" to today's date.
Here's what I have got so far: For MedRecRcvd dropdown I have got an editor function where I am trying to assign todays date when a change event is fired. I need help assigning todays date to the datepicker if selected value of MedRecRcvd is "Y". As you can see I tried variety of things to get instance of the kendo datepicker and set a value but I am pretty much hitting a wall now. Any ideas would be appreciated !
function medRecRcvdDropDownEditor(container, options) {
$('<input required name="' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
autoBind: true,
dataTextField: "MedRecRcvdName",
dataValueField: "MedRecRcvdId",
change: function (e) {
var value = this.value();
if (value != null && value == "Y") {
var grid = e.sender.element.closest(".k-grid").data("kendoGrid");
var row = e.sender.element.closest("tr");
var medRecdtPicker = e.sender.element.closest("[name='dateReceived']").data("kendoDatePicker");
medRecdtPicker.setDate(new Date());
}
},
dataSource: {
transport: {
read: function (e) {
e.success(datasource);
},
}
}
});
}
You could directly assign the value to the model.
e.g.
function medRecRcvdDropDownEditor(container, options) {
$('<input required name="' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
autoBind: true,
dataTextField: "MedRecRcvdName",
dataValueField: "MedRecRcvdId",
change: function (e) {
var value = this.value();
if (value != null && value == "Y") {
options.model.set('dateReceived', new Date())
}
},
dataSource: {
transport: {
read: function (e) {
e.success(datasource);
},
}
}
});
}