Как я могу ввести значение в поле ввода фильтра даты сетки kendo?

#javascript #jquery #kendo-ui #kendo-grid #kendo-asp.net-mvc

Вопрос:

В моей сетке у меня есть FromDate поле , отформатированное как MM/yyyy , а в сетке источника данных FromDate значение находится в MM/dd/yyyy формате. Дата всегда является первым днем месяца, поэтому я использовал код jQuery, чтобы установить значение даты на первый день месяца, если пользователь выбирает любую дату с помощью календаря с сетчатым фильтром или средства выбора даты.

Например, если пользователь выбирает или вводит вручную 11/25/2020 с помощью средства выбора даты или клавиатуры, приведенный ниже код jQuery устанавливает дату на первый день как 11/1/2020 , что работает нормально. Но проблема в том, что если пользователь вводит или вводит дату вручную в MM/yyyy формате или, скажем, вводит 11/2020 , то ничего не происходит.

введите описание изображения здесь

как я могу ввести значение в поле ввода фильтра даты сетки kendo, чтобы применить ту же логику, что и ниже?

 if (e.filter.filters[0].field === "FromDate" ) {

    var fromDate = e.filter.filters[0].value
    var month = fromDate.getMonth();
    var year = fromDate.getFullYear();

    var firstDateOfTheMonth = new Date(year, month   1);
    var lastDay = firstDateOfTheMonth.getDate();
    fromDate.setDate(lastDay);

    console.log(e.filter.filters[0]);

    var formattedFromDate = moment(fromDate).format('MM/DD/YYYY');
    var productsGrid= $("#ProductsGrid").data("kendoGrid");

    productsGrid.dataSource.filter({
        field: e.filter.filters[0].field,
        operator: e.filter.filters[0].operator,
        value: formattedFromDate
    });
}
 

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

1. Привет, ты можешь сделать это работающим ?

Ответ №1:

Используйте событие изменения datepicker для запуска вашей функции

 $("#datepicker").kendoDatePicker({
 change: function() {
    var value = this.value();
    // logic here
 }
});
 

Ответ №2:

я исправил проблему с смайликом этим в сетке

         ->parameterMap('function(options, operation) {

                        
if (options.hasOwnProperty("filter")){
//console.log(options.filter.filters);
var filtre=options.filter.filters;
   for(i=0;i<filtre.length;i  ){
       //console.log(filtre[i].field);
       if(filtre[i].field=="date"){
       filtre[i].value=kendo.toString(filtre[i].value,"yyyy-MM-dd");
      // console.log(kendo.toString(filtre[i].value,"yyyy-MM-dd"));
        }
   }
}

            return kendo.stringify(options);
         }'

   );