【问题标题】:Date format wrong on save保存时日期格式错误
【发布时间】:2016-02-17 16:15:57
【问题描述】:

我需要一点帮助,我创建了一个网格,除了编辑行并单击保存时,大部分情况下都可以正常工作;订单日期发生了巨大变化,我看不到如何解决它的模式。我已经更改了srcformatnewformat 参数,我还尝试了很多不同的东西,所有这些似乎都不起作用。有人可以看看我的小提琴并告诉我那个日期发生了什么吗?

为了测试小提琴,请选择一行然后点击编辑(铅笔图标)然后在原因字段中输入数量4和一些乱码,点击保存,查看订单日期,它从默认更改为一些随机的日期。我正在使用最新版本的 free-jqgrid (4.12.1)

https://jsfiddle.net/y3llowjack3t/8zs1q7Lm/1/

{
    name: 'OrderDate', index: 'OrderDate', width: 90, align: "center",
    search: true, searchoptions: { sopt: ['eq', 'bw', 'bn', 'cn', 'nc', 'ew', 'en'] },
    formatter: 'date', formatoptions: { newformat: 'm/d/Y' },
    editable: true, editrules: { required: true, date: true },
    editoptions: { dataInit: function (elem) { $(elem).datepicker(); } }
},

谢谢!

【问题讨论】:

    标签: jquery jqgrid free-jqgrid


    【解决方案1】:

    问题在于您的日期/时间格式。看起来 jqGrig 正在等待 2016-04-01T00:00:00 而您正在传回 01/04/2016

    修改aftersavefunc 以包括:

    aftersavefunc: function(iRow, response, options) {
    
      // ...
      currentRowData.OrderDate = moment(currentRowData.OrderDate).format();
      // ...
    
    }
    

    【讨论】:

      【解决方案2】:

      您代码中的主要问题是不在日期列中,而是在您使用的aftersavefunc 函数中。如果你只是注释回调函数,你会看到免费的 jqGrid 正确保存了数据:https://jsfiddle.net/OlegKi/8zs1q7Lm/3/

      我建议您对当前代码进行一些更改。首先你应该修复rowids。输入数据的RecurringOrderId 属性似乎是独一无二的。对于 rowid 值,这是一个不错的选择。您应该添加localReader: { id: "RecurringOrderId" },因为您使用的是datatype: "local"

      更改后您将不需要使用类似的代码片段

      var rowData = $('#editFrequencyTable').getRowData(val);
      efData = $.grep(efData, function(value, i) {
          return value.RecurringOrderId !== rowData.RecurringOrderId;
      });
      

      通过rowid获取数据。而不是来自所有回调的 rowid 将已经是 RecurringOrderId 值,您可以使用 $('#editFrequencyTable').getLocalRow(rowid) 通过 rowid 获取数据。 getLocalRow 方法比getRowData 快得多,它可以获取原始项目的所有属性。因此,您不需要使用任何隐藏列。您只需从 colModel 中删除列(RecurringOrderIdPONumberEdited),仍然可以访问这些属性。

      其他一些选项可以只删除loadonce: trueheight: 'auto'datatype: "local",不存在gridView: truegridview: true 是正确的,但它是免费 jqGrid 中的默认值)。以同样的方式,您可以从所有 colModel 项目和 search: true 中删除不需要的 index 属性。

      您可以使用 jqGrid 的navOptionsinlineNavOptionssearchingformDeletinginlineEditing 选项使代码更具可读性。有关详细信息,请参阅the wiki article。结果你得到了类似的代码

      https://jsfiddle.net/OlegKi/8zs1q7Lm/4/

      很明显,您可以清理代码并进一步减少代码。使用正确的 rowid 和getLocalRow 后,您可以轻松访问和修改数据。我认为你可以自己做到这一点。您可以通过使用列模板另外减少colModel 的代码。详情请见the old article

      【讨论】:

      • 感谢您的描述性回复。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 2018-10-04
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多