如何在jquery网格中设置自定义过滤器时将字符串转换为日期?

时间:2016-04-28 20:33:24

标签: javascript jqgrid

这是我的网格

中的一列
{ name: 'DueDate',
            index: 'DueDate',
            sortable: true,
            sorttype: 'date',
            editable: false,
            width: 125,
            formatter: 'date',
            searchoptions: {
                dataInit: function(element) {
                    $(element).datepicker({
                       dateFormat: 'mm/dd/yy'
                    });
                }
            }
        }

我正在尝试设置这样的自定义过滤器 -

 var now = moment();
    var formattedDate = now.format('MM/DD/YYYY');
    var date = Date.parse(formattedDate);
    var f = { groupOp: "OR", rules: [] };
    f.rules.push({ field: 'DueDate', op: 'lt', data: date});
    $grid[0].p.search = true;
    $.extend($grid[0].p.postData, { filters: JSON.stringify(f) });
    $grid.trigger('reloadGrid');

' DUEDATE'返回的是日期字符串。所以我需要解析它才能比较。我该怎么做呢?有没有办法做到这一点?

更新: Data Sample from controller

  

DueDate是一个Datetime对象,来自控制器的值是   / Date(-62135568000000)/(json对象)这被格式化为' mm / dd / yy'格式和   这会转换为日期字符串,看起来像普通日期。我有一个   下拉菜单项,包含所有过滤条件。我点击其中一个   menu-items,用于选择具有DueDate<的所有行。   今天我需要解析的日期' DueDate'领域的价值。

对于测试,当我使用它时 -

 var now = moment();
    var formattedDate = now.format('MM/DD/YYYY');
    var rowdata = $grid.jqGrid('getRowData');
    var dueDate = rowdata[0].DueDate; //just picking first row's due date
    alert("DueDate: " + dueDate);//alerts "1/1/2015"   
    var d = Date.parse(formattedDate);
    //var ts = dueDate.getTime(); --I get an error here- getTime() not supported for this object.
   //this works fine- & I need something like this for filters
    if (Date.parse(dueDate) < d) {
        alert("It is due");
    }
    var f = { groupOp: "AND", rules: [] };
    f.rules.push({ field: 'DueDate', op: 'lt', data: d });
    f.rules.push({ field: 'HasMapping', op: 'eq', data: true });
    $grid[0].p.search = true;
    $.extend($grid[0].p.postData, { filters: JSON.stringify(f) });
    $grid.trigger('reloadGrid');

0 个答案:

没有答案