jQuery — Как установить сегодняшнюю дату в Кендо ДатаПикере внутри сетки Кендо при изменении раскрывающегося списка значений

#javascript #jquery #kendo-ui #datepicker #kendo-grid

Вопрос:

Фон:

У меня есть сетка jQuery Kendo с нижеприведенными столбцами, в которой я разрешаю пользователям выполнять встроенное редактирование в пакетном режиме.

    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({
                  
                });
            }
        }]
 

Требования:
Выпадающий список MedRecRcvd имеет 3 возможных значения. Одним из требований является, когда выбранное значение для MedRecRcvd выбрано как «Да», затем установите «Дата получена» на сегодняшнюю дату.

Вот что у меня есть до сих пор: Для выпадающего списка MedRecRcvd у меня есть функция редактора, в которой я пытаюсь назначить сегодняшнюю дату, когда происходит событие изменения. Мне нужна помощь в назначении сегодняшней даты для выбора даты, если выбранное значение MedRecRcvd равно «Y». Как вы можете видеть, я пробовал разные вещи, чтобы получить экземпляр kendo datepicker и установить значение, но сейчас я в значительной степени упираюсь в стену. Любые идеи будут оценены по достоинству !

 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 amp;amp; 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);
                    },

                }
            }
        });
}
 

Комментарии:

1. Можете ли вы поделиться минимальным, воспроизводимым и рабочим примером?

Ответ №1:

Вы можете напрямую присвоить значение модели.

напр.

 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 amp;amp; value == "Y") {
                    options.model.set('dateReceived', new Date())
                }            
            },
            dataSource: {
                transport: {
                    read: function (e) {
                        e.success(datasource);
                    },

                }
            }
        });
}
 

Комментарии:

1. это сработало как заклинание!! Почему я об этом не подумал? спасибо тебе, уууу 🙂