gpt4 book ai didi

javascript - jqgrid:对日期列进行排序时 MySQL 的特定问题

转载 作者:行者123 更新时间:2023-11-29 06:23:26 24 4
gpt4 key购买 nike

在过去几个月里遇到这个问题几次之后(我总是忘记这个问题的根源是什么),我决定在这里发布我的问题和答案。

这是关于您的colModel 中可排序日期列的问题;这里有一个简单的例子:

{
name:'my_date', index:'my_date', width:100, search: false, sort: true,
sorttype: 'date', formatter: 'date',
formatoptions: {srcformat: 'Y-m-d', newformat: 'd.m.Y'}
}

当尝试通过在 jqgrid 中单击标题对该列进行排序时,我不断收到此错误:

Uncaught TypeError: u.parseDate.call(...).getTime is not a function

我在网上到处找,没找到。与 jqGrid 结合使用时出现此错误似乎是一种非常罕见的情况。
我对我的 jqGrid 中的所有内容进行了两次和三次检查,但我似乎没有错误。


更新
由于我接受了 Oleg 的回答,以下是导致问题的原因和我的解决方法:

查看数据库中的数据后,我在日期列中看到了很多“零日期”。较旧的 MySQL 数据库通常使用此代替 NULL:“0000-00-00”或“0000-00-00 00:00:00”。

事实证明这是导致问题的原因——jqgrid 无法处理这些“零日期”。所以我所要做的就是操纵我的 MySQL 结果集:

CASE WHEN `my_date` = '0000-00-00' THEN ''
ELSE `my_date`
END `my_date`

最佳答案

感谢您的错误报告!问题的原因如下。内部方法jgrid.parseDate返回字符串 " " (参见 the lines )如果日期为 0000-00-00 :

if (ts.m === 0 && ts.y === 0 && ts.d === 0) {
return " ";
}

另一边the code

findSortKey = function ($cell) {
return jgrid.parseDate.call(context, dfmt, $cell).getTime();
};

只需调用 .getTime()结果 $.jgrid.parseDate .我现在 promise the fix修改了上面的代码 findSortKey到以下

findSortKey = function ($cell) {
var datetime = jgrid.parseDate.call(context, dfmt, $cell);
// datetime could be the string " "
return datetime instanceof Date ? datetime.getTime() : 0;
};

它应该可以解决您报告的问题。请尝试free jqGrid的新来源.

关于javascript - jqgrid:对日期列进行排序时 MySQL 的特定问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com