【问题标题】:JQGrid DateTime Advanced FilterJQGrid 日期时间高级过滤器
【发布时间】:2012-08-10 21:48:41
【问题描述】:

我被困在这里 - 生产前要做的最后一件事。

来自 oracle 的日期格式如下:“8/14/2012 10:46:48 AM”

我在 jqgrid 上使用以下内容:

{ name: 'CreationDate', index: 'CreationDate', formatter: 'date', formatoptions:    { 'srcformat': 'ISO8601Long', 'newformat': 'm/d/Y - g:i A' }, sorttype: 'date', width: 95, align: 'right', resizable: false },

我在网格上显示以下内容:“08/14/2012 - 10:46AM”

问题是当我尝试使用高级过滤器时它不起作用。我的猜测是因为时间问题,有什么建议可以解决这个问题吗?

更新

Oleg,我复制了您发布的代码以及您的更改,但仍然没有。我正在使用高级过滤器。感谢您的所有帮助,我真的非常感谢。我希望我能给你送些啤酒去德国:o)

【问题讨论】:

  • 更多信息,json数据显示数据为“2012-08-14T10:46:48”。如果我在过滤器上输入 2012-08-14,它会很好地过滤,但如果我输入 08/14/201,它不会

标签: jqgrid


【解决方案1】:

我认为主要问题是您在newformat 中使用g 格式,jqGrid 目前不支持本地过滤/搜索。您可以尝试改用H 格式。或者,您可以使用the answer 中描述的修复程序。

更新The demo 表明在应用我引用的修复程序后,可以使用带有formatter: 'date', formatoptions: { 'srcformat': 'ISO8601Long', 'newformat': 'm/d/Y - g:i A' } 的高级搜索对话框。您可以尝试演示并输入我在下图中使用的相同数据(10/04/2012 - 5:55 PM)。你必须看到以下结果:

更新 2:在为您准备另一个演示时,我在内部 parseDate 函数中发现了另一个错误。问题是 parseDate 函数的当前实现只有在需要解析的日期包含与指定格式相同的元素时才能正确工作。例如,日期10/04/2012 使用'm/d/Y - g:i A' 格式将无法正确解析。要修复错误,可以包含以下行

if(typeof date[k] === "undefined") { continue; }

作为the loop 正文的第一行。 jquery.jqGrid.src.js的固定版本可以得到here

在演示中,我使用jqGrid searchingmultipleSearch: true 选项。结果,可以指定日期的间隔,例如

10/04/2012 <= x <= 10/05/2012

对应的搜索对话框如下图所示,您可以按日期间隔进行过滤

【讨论】:

  • Oleg,感谢您的回复,但仍然无法正常工作。我将格式更改为 H { 'srcformat': 'ISO8601Long', 'newformat': 'm/d/Y - H:i A' } 但没有帮助过滤器仅适用于我输入数据即将到来的 wat在 json "2012-08-14" 上。如果我试图实现其他答案,那么我必须输入所有内容,包括时间。你认为我会这样做的任何其他方式吗?再次感谢。
  • 有没有专门为这个日期列写一个自定义过滤器?
  • @user1409155:抱歉,在应用我引用的修复程序后,我没有看到数据过滤有任何问题。我为您制作了演示,证明一切正常。请参阅我的回答的已更新部分。
  • 再次感谢奥列格。过滤器的问题是我必须输入整个内容才能搜索。即我无法过滤所有 10/05/2012,它不会返回任何结果。我必须输入 10/05/1012 - 7:10 AM。这有意义吗?
  • @user1409155:请参阅 UPDATED 2 部分答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 2019-08-02
  • 2020-12-29
  • 2017-02-18
  • 1970-01-01
相关资源
最近更新 更多