如果服务器上的网格过滤,如何将kendo标准日期格式更改为sql格式?

时间:2016-05-22 16:54:23

标签: java sql kendo-ui kendo-grid kendo-asp.net-mvc

我有Kendo网格,服务器过滤启用,如果我点击过滤日期列,服务器正在接收日期值作为标准,如下所示

2016年5月3日星期二00:00:00 GMT + 0400(阿拉伯标准时间) 我知道如何在更新时更改日期值,如下所示

parameterMap: function(data, type) {

if (type !== "read" && data.models) {
                                    //return {models: kendo.stringify(options.models)};
                                    var d = new Date( data.models[0].joinDate );

                                    data.models[0].joinDate =  kendo.toString(new Date(d), "yyyy-MM-dd");

                                   console.log("date is:"+data.models[0].joinDate);
  // here the server is receiving the join date as yyyy-MM-dd

                                   return data;
                                }
                }
    else
     {
         // it is showing an error if i do like that
        // var d = new Date( data.models[0].joinDate );
       //  data.models[0].joinDate =  kendo.toString(new Date(d), "yyyy-MM-dd");
       return data;

     }

现在我的问题是,当我点击网格的过滤器按钮时会触发什么功能,在那里我可以在发送到服务器之前将日期解析为sql格式。我已尝试在上面提到的读取功能中执行此操作,但它显示错误。

1 个答案:

答案 0 :(得分:0)

我想我经过长时间的搜索才能解决这个问题,这个答案适合那些像我一样搜索的人。 为了在发送到服务器之前将过滤器字段值从标准日期时间格式更改为sql格式,我们需要更改网格数据源的过滤器配置对象中该字段的值。

为了获得过滤器配置对象,我们可以在内部传输transport.parameterMap,如下所示

              parameterMap: function(data, type) {
                                if (type !== "read" && data.models) {
                                    //return {models: kendo.stringify(options.models)};
                                    var d = new Date( data.models[0].joinDate );

                                    data.models[0].joinDate =  kendo.toString(new Date(d), "yyyy-MM-dd");

                                   console.log("joinDate in sql frmat for any update on grid:"+data.models[0].joinDate);

                                   return data;
                                }
                                else
                                {
                                    // get currently applied filters from the Grid is data.filter.
                                    var currFilterObj = data.filter;
                                    var currentFilters = currFilterObj ? currFilterObj.filters : [];

                                  if (currentFilters && currentFilters.length > 0) {
                                    for (var i = 0; i < currentFilters.length; i++) {

                                        if (currentFilters[i].field == "joinDate")
                                        {
                                             var d = new Date(  currentFilters[i].value );
                                             currentFilters[i].value  =  kendo.toString(new Date(d), "yyyy-MM-dd");

                                        console.log("Now joinDate value is in sql format "+currentFilters[i].value);
                                        }

                                    }
                                }

                                  return data;

                                }