Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当usign serevr端筛选时,剑道网格中的自定义筛选器传递空值_Php_Kendo Ui_Kendo Grid - Fatal编程技术网

Php 当usign serevr端筛选时,剑道网格中的自定义筛选器传递空值

Php 当usign serevr端筛选时,剑道网格中的自定义筛选器传递空值,php,kendo-ui,kendo-grid,Php,Kendo Ui,Kendo Grid,我正在使用剑道网格服务器端筛选。所有列都工作正常,我有一个名为purchase date的列。我在这里使用了使用日期选择器的自定义筛选,如下所示。但在筛选日期选择器的值时,不将其传递到服务器端。请建议 field: "purchase_date", width: "120px", title: "Purchase Date",

我正在使用剑道网格服务器端筛选。所有列都工作正常,我有一个名为purchase date的列。我在这里使用了使用日期选择器的自定义筛选,如下所示。但在筛选日期选择器的值时,不将其传递到服务器端。请建议

field: "purchase_date",
                              width: "120px",
                              title: "Purchase Date",
                              template: '#= kendo.toString(purchase_date, "MM-dd-yyyy") #',
                              filterable:
                              {
                                  ui: function (element) {
                                      element.kendoDatePicker(); // initialize a Kendo UI DateTimePicker
                                  },
                                  extra: false,
                                  operators: {
                                      date: {
                                          eq: "Equals to",
                                          lt: "Less than",
                                          gt: "Greater than"
                                      }
                                  }

                              }

似乎日期字段并非总是以可理解的格式正确发送到服务器

例如,向服务器发送的日期筛选器为:take=5&skip=0&page=1&pageSize=5&filter[logic]=和&filter[filters][0][field]=HireDate&filter[filters][0][operator]=eq&filter[filters][0][value]=2013年11月12日星期二00:00:00 UTC+0100

为了解决这个问题,我使用添加自定义映射代码将所有日期字段的值更改为服务器可以理解的格式。我用这个

parameterMap: function (options) {
    if (options.filter) {
       KendoGrid_FixFilter(dataSource, options.filter);
    }
    return options;
}
自定义映射javascript函数KendoGrid_FixFilter定义为:

// kendoDataSource = kendo.data.DataSource
// filter = kendo filter
function KendoGrid_FixFilter(kendoDataSource, kendoFilter, depth) {
    if ((!kendoDataSource) || (!kendoFilter)) return;

    if (!depth) depth = 0;
    // console.log(depth + " - FixDatesInFilter:" + JSON.stringify(kendoFilter));

    $.each(kendoFilter.filters, function (idx, filter) {
        //console.log("filter = " + idx + " = " + JSON.stringify(filter));

        if (filter.hasOwnProperty("filters")) {
            depth++;
            KendoGrid_FixFilter(kendoDataSource, filter, depth)
        }
        else {
            $.each(kendoDataSource.schema.model.fields, function (propertyName, propertyValue) {
                if (filter.field == propertyName && propertyValue.type == 'date') {
                    filter.value = kendo.toString(filter.value, _DefaultDateFormat); // "MM/dd/yyyy"
                    // console.log("changed = " + filter.value);
                }
            });
        }
    });
}

一个运行演示,参见./P>在KeDoui网站上的Demo,非常接近你想要做的事情,而不是使用一个模板来获得正确的日期格式,考虑使用<代码>格式:“{ 0:mm DD Yyyy }”<代码>。你在<代码>数据源< /COD>定义中定义了<代码>服务器过滤:真的< /代码>吗?否则,过滤将在客户机中使用原始

传输上接收的数据进行。读取
。是的,我定义了serverFiltering:true,其他列也可以使用它。