取消内联编辑后,日期列将以未定义形式返回,而不是还原原始值。列定义如下(日期以1970-01-01
格式显示):
{name:'Release<br>Date',index:'Street_Date', sorttype:"date", width:70,
formatter: function (cellvalue, options, rowObject) {
return cellvalue === ('1970-01-01') ? "" : $.fn.fmatter.call(this, "date", cellvalue, options, rowObject);
},
formatoptions: {newformat:'d M y'},
editable:true,
editoptions: {
size:9,
dataInit: function(el, options) {
$(el).datepicker({
dateFormat: "d M y",
defaultDate: '01 Jan 70',
onSelect: function(dateText, inst) {
}
});
}
},
searchoptions: {
sopt: ['eq','ne','ge','le'],
dataInit: function (elem) {
$(elem).datepicker({ showButtonPanel: true, dateFormat: 'yy-mm-dd' })
}
}
},
内联编辑的设置如下:
ondblClickRow: function (rowid) {
var savedRows = $grid.jqGrid("getGridParam", "savedRow");
if (savedRows.length > 0 && savedRows[0].id !== rowid) {
// cancel editing
$grid.jqGrid("restoreRow", savedRows[0].id);
}
if (savedRows.length === 0) {
$grid.jqGrid("editRow", rowid, editOptions);
}
}
加载网格后,日期显示为07 Aug 18
,双击进入内联编辑,日期仍为07 Aug 18
。通过单击离开或单击“取消”取消编辑后,日期变为NaN undefined N
。刷新后,它可以正确返回。
在取消编辑后如何保留正确的日期?
网格在formatter: date
免费的jqGrid v jqGrid 4.13.5
答案 0 :(得分:0)
也许free-jqGrid的作者会有所帮助,但是我建议您在调用格式化程序时添加其他参数(action ='edit')。下面的代码:
formatter: function (cellvalue, options, rowObject) {
return cellvalue === ('1970-01-01') ? "" : $.fn.fmatter.call(this, "date", cellvalue, options, rowObject, "edit");
},
注意$ .fn.fmatter.call中的最后一个参数
更新
这在我的测试中有效。 由于您使用的是自定义日期格式,因此需要对saveRows中的值进行无格式设置以便正确保存。如果默认的formatter = date,则会自动完成。
下面是可以使用的代码,假设您知道colModel中字段的索引:
ondblClickRow: function (rowid) {
var savedRows = $grid.jqGrid("getGridParam", "savedRow");
if (savedRows.length > 0 && savedRows[0].id !== rowid) {
// cancel editing
savedRows[0].Release_Date = $.unformat.date.call($grid[0], savedRows[0].Release_Date, $grid[0].p.colModel[1]);
$grid.jqGrid("restoreRow", savedRows[0].id);
}
if (savedRows.length === 0) {
$grid.jqGrid("editRow", rowid, editOptions);
}
}