【问题标题】:Many issues with date filtering & formatting in jqgridjqgrid中日期过滤和格式化的许多问题
【发布时间】:2017-07-12 12:03:41
【问题描述】:

我在 jqgrid 中有一个应该处理日期信息的列,实际上我对这个列有很多问题:

1- 日期从后端返回并显示如下29/03/2017 00:00:00 ...所以当我尝试使用这样的格式化程序时:formatter: "date", formatoptions: { newformat: "d-M-Y" },日期被损坏,并且显示完全不同的日期09-Aug-2033

2- 当我尝试添加日期选择器搜索时,它什么也没做,我的意思是根本没有过滤发生并且网格数据保持不变,无论我是否使用上述格式化程序

其实我是靠奥列格的例子here

我的代码经过一些修改:

{
  name: 'F_GCEO_MEETING_DATE',
  index: 'F_GCEO_MEETING_DATE',
  align: 'left',
  width: 100,
  sortable: true,
  search: true,
  editable: false,
  cellEdit: false,
  formatter: "date",
  formatoptions: {
    newformat: "d-M-Y"
  },
  editoptions: {
    dataInit: function(elem) {
      $(elem).datepicker({
        dateFormat: "dd-M-yy",
        buttonImageOnly: true,
        buttonText: "Select date",
        autoSize: true,
        changeYear: true,
        changeMonth: true,
        showButtonPanel: true,
        showWeek: true,
        onSelect: (function() {
          setTimeout(function() {
            this.triggerToolbar();
          }, 0);
        })
      });
    }
  },
  searchoptions: {
    sopt: ["eq", "ne", "lt", "le", "gt", "ge"],
    attr: {
      placeholder: "dd-M-yyyy"
    },
    dataInit: function(elem) {
      $(elem).datepicker({
        dateFormat: "dd-M-yy",
        buttonImageOnly: true,
        buttonText: "Select date",
        autoSize: true,
        changeYear: true,
        changeMonth: true,
        showButtonPanel: true,
        showWeek: true,
        onSelect: (function() {
          setTimeout(function() {
            this.triggerToolbar();
          }, 0);
        })
      });
    }
  }
}

jquery 版本:1.9.1

jqGrid 版本:4.5.0

关于 fork,我不确定,它实际上是 liferay 库的一部分,但似乎是免费版本。

这个和my previous question有关,但是有更多的细节和不同的要求

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:

    您需要指定传入日期的源格式 - 默认为 ISO 数据,如 Y-m-d。因此,您需要像这样设置 srcformat 选项:

      {
      name: 'F_GCEO_MEETING_DATE',
      index: 'F_GCEO_MEETING_DATE',
      align: 'left',
      width: 100,
      sortable: true,
      search: true,
      editable: false,
      cellEdit: false,
      formatter: "date",
      formatoptions: {
        srcformat : "d/m/Y H:i:s",
        newformat: "d-M-Y"
      },
    

    至于第二个问题,我想你使用工具栏搜索,你可以使用Guriddo jqGrid Knowledgebase这个论坛帖子

    【讨论】:

    • 非常感谢...第一个问题解决了,但是关于第二个问题,代码与格式化程序不兼容,即无法理解破折号-出现在格式化的搜索过滤器......因此给出零结果......所以如果我的日期为 (28-02-2017) 并且我手动输入 28 ,它会在结果中返回,如果我输入 '28-' 什么都没有返回,如果我使用日期选择器选择 '28-02-2017' 也不会返回任何内容
    • 首先你不允许一个搜索操作like一些值。您允许的搜索操作是相等的,更大的等等。其次 - 它取决于您执行搜索的位置。如果您在服务器上执行搜索,您将需要优化您的服务器搜索逻辑,当搜索是本地搜索并且日期字段不允许使用您描述的类似操作时
    • 搜索是本地的...即使将其更改为 'cn' ,也没有返回任何内容...我认为问题是格式化程序的搜索不正常,似乎正在搜索在被格式化之前在数据中很好,因此无法在格式化的数据中搜索......你有什么想法吗?
    • 究竟使用的是哪个版本的jqGrid 4.5,以便我可以检查问题是否正确?有从 4.5.0 到 4.5.4 的版本
    猜你喜欢
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    相关资源
    最近更新 更多