在利用datagrid展示后台数据库数据的过程中,会发现,日期数据无法正常显示,而是显示一连串的数字。在controller层debug调试时显示数据为Date型数据,应该是在页面无法读取,导致页面显示出问题,而且显示的数据为Date的数据,其中展示到前台的是数据的fasttime
参考网上给的网站,这里给出两种方案。
1.在后台将日期数据组装成字符串数据,这样传入前台没有任何问题
2.因为后台从数据库到控制,数据一致保持日期格式,所以在页面处理更好一点,更符合逻辑要求
Date.prototype.format = function (format) {
var o = {
"M+": this.getMonth() + 1, // month
"d+": this.getDate(), // day
"h+": this.getHours(), // hour
"m+": this.getMinutes(), // minute
"s+": this.getSeconds(), // second
"q+": Math.floor((this.getMonth() + 3) / 3), // quarter
"S": this.getMilliseconds()
// millisecond
}
if (/(y+)/.test(format))
format = format.replace(RegExp.$1, (this.getFullYear() + "")
.substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
return format;
}
function formatDatebox(value) {
if (value == null || value == '') {
return '';
}
var dt;
if (value instanceof Date) {
dt = value;
} else {
dt = new Date(value);
}
return dt.format("yyyy-MM-dd"); //扩展的Date的format方法(上述插件实现)
}
这样就可以实现。
$('#datagridDemo1').datagrid({
……
columns: [[
{ field: 'CreateDate', title: '创建日期', width: 120,align: 'center',formatter: formatDatebox},
……
]]
});
参考网址:点击打开链接