我需要一些帮助,我创建了一个大部分都适用的网格,除非我编辑行并单击保存;订单日期发生了巨大变化,我没有看到模式来弄清楚如何修复它。我已经更改了srcformat
和newformat
参数,我还尝试了一大堆不同的东西,所有这些似乎都不起作用。有人可以看看我的小提琴并告诉我那个日期发生了什么事吗?
为了测试小提琴,请选择一行,然后单击编辑(铅笔图标),然后在原因字段中输入数量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(); } }
},
谢谢!
答案 0 :(得分:1)
代码中的主要问题是不在日期列中,而是在您使用的aftersavefunc
函数中。如果您只是评论回调函数,您将看到免费的jqGrid正确保存数据:https://jsfiddle.net/OlegKi/8zs1q7Lm/3/。
我建议您对当前代码进行一些更改。首先,你应该修复rowid。输入数据的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
,并且它会获得原始项目的所有属性。因此,您不需要使用任何隐藏的列。您只需从RecurringOrderId
中删除列(PONumber
,Edited
和colModel
),然后仍然可以访问这些列。
其他一些选项可以刚刚删除loadonce: true
,height: 'auto'
,datatype: "local"
,而不是现有gridView: true
(gridview: true
是正确的,但默认为免费jqGrid的)。同样,您可以从所有index
项和colModel
中删除不需要的search: true
媒体资源。
您可以使用jqGrid的navOptions
,inlineNavOptions
,searching
,formDeleting
,inlineEditing
选项来提高代码的可读性。有关详细信息,请参阅the wiki article。结果你得到像
https://jsfiddle.net/OlegKi/8zs1q7Lm/4/
很明显,您可以清理代码并进一步减少代码。使用正确的rowid和getLocalRow
后,您可以轻松访问和修改数据。我想你可以自己做。您还可以通过使用列模板来减少colModel
的代码。有关详细信息,请参阅the old article。
答案 1 :(得分:1)
问题在于您的日期/时间格式。看起来jqGrig期待2016-04-01T00:00:00
并且您要回传01/04/2016
。
修改aftersavefunc
以包含:
aftersavefunc: function(iRow, response, options) {
// ...
currentRowData.OrderDate = moment(currentRowData.OrderDate).format();
// ...
}