【问题标题】:jqGrid search formated date using toolbarjqGrid使用工具栏搜索格式化日期
【发布时间】:2018-01-31 17:23:24
【问题描述】:

希望有人可以帮助解决问题。我有一个项目,用户必须能够设置他如何在 jqGrid 中查看日期的日期格式(我最近开始学习),并且还必须实现工具栏搜索。现在我有这个:

       {
            name: 'DueDate',
            formatter: "date",
            formatoptions: {
                srcformat: 'd.m.Y',
                newformat: gridOptions.dateFormat, // setting date format
            },
            sorttype: 'date',
            searchoptions: {
                sopt: ['eq'],
                dataInit: function (e) {
                    //setting jquery-ui extension: multi-datepicker
                }
            }
        },

问题在于,其中一个可能的格式选择必须是j.F,其中系统只显示日期和完整的月份名称,而没有显示年份。当日期格式设置为这种特定格式时,工具栏搜索找不到它,即使我知道存在这样的日期。格式化本身运作良好,它是搜索导致问题的日期。即使使用这种格式(实际上是任何格式)在工具栏字段中输入日期,也不会显示任何结果。我可以通过将newformat 设置为任何其他格式来添加它,工具栏搜索有效,但不适用于此j.F

系统使用jqGrid JS - v5.2.1

附:我想知道是否可以使用d.m.Y 格式进行过滤,同时显示j.F

【问题讨论】:

  • 不知道在哪里执行搜索 - 我的意思是数据类型设置是什么 - json(xml) 或本地。如果搜索是在服务器上执行的,那么您应该关心从帖子中得到什么。如果数据类型是本地的(或 loadonce 为真),您应该知道网格以原始格式存储日期字段并根据新格式执行日期显示。如果执行搜索,则将新格式转换回原始格式并执行搜索。如果您在搜索时尝试使用不同的格式,它将无法正常工作。
  • 很高兴知道,托尼托莫夫。我从服务器获取数据,并且我的 loadonce 为 true,但如果我理解正确,我的问题在于它无法将 j.F 格式转换回其原始格式?
  • 问题是:newformat(即gridOptions.dateFormat)的值是多少,在searchtoolbar字段中输入了什么值?
  • gridOptions.dateFormat 值正如我提到的'j.F'和我在搜索工具栏字段中输入的值:'8.September'。

标签: javascript jqgrid


【解决方案1】:

问题: 当日期从 srcformat 格式化为 newformat 时,一年会按照规则进行裁剪。当输入仅包含月份和日期的搜索日期时,缺少年份,并且对没有年份的原始数据执行搜索(因为转换为原始日期)。这会导致错误的搜索结果。例如,如果您输入 4.July 作为搜索字符串,则根据规则,该字符串将转换为 4.7.1970 并执行搜索到该日期,这不会给出所需的结果。

解决方案: 一种可能的解决方案是定义一个包含格式化数据的虚拟字段,并且在执行搜索时,它应该应用到的不是实际的日期字段,而是新的构建 - ed 虚拟场。下面是代码:

{
    name: 'DueDate',
    index : 'mydate',
    formatter: "date",
    formatoptions: {
        srcformat: 'd.m.Y',
        newformat: gridOptions.dateFormat, // setting date format
    },
    sorttype: 'date',
    searchoptions: {
        sopt: ['eq'],
        dataInit: function (e) {
            //setting jquery-ui extension: multi-datepicker
        }
    }
},
{
    name : 'mydate',
    hidden: true,
    jsonmap : function(item) {
        return  $.jgrid.parseDate.call($("#jqGrid")[0] , 'd.m.Y', item.DueDate , 'j.F'); 
    }
},

注意 DueDate 中的 index 属性。 #jqGrid 是 mydate 虚拟字段中 jsonmap 中定义的网格的 id

【讨论】:

  • 谢谢托尼,你是救生员。它奏效了,现在我终于可以继续前进了
猜你喜欢
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
相关资源
最近更新 更多