在这里有一个很好的JSON问题;
在将其发送到MVC中的视图之前,我不知道如何格式化日期,时间跨度,小数等。我正在使用datatables jQuery插件,我的'DataHandler'方法返回一个JSON对象作为数据表的源。
当我处理数据并过滤客户端时,它非常简单,但现在我正在处理服务器端的数据。
控制器:
properties: {
links: {
type: Array,
notify: true,
value: function(){ return []; }
}
}
表格初始化:
public JsonResult DataHandler(DTParameters param)
{
try
{
var dtsource = new List<spRegistrations_Result>();
using (entities dc = new entities())
{
dtsource = dc.spRegistrations().ToList();
}
List<String> columnSearch = new List<string>();
foreach (var col in param.Columns)
{
columnSearch.Add(col.Search.Value);
}
List<spRegistrations_Result> data = new ResultSet().GetResult(param.Search.Value, param.SortOrder, param.Start, param.Length, dtsource, columnSearch);
int count = new ResultSet().Count(param.Search.Value, dtsource, columnSearch);
DTResult<spRegistrations_Result> result = new DTResult<spRegistrations_Result>
{
draw = param.Draw,
data = data,
recordsFiltered = count,
recordsTotal = count
};
return Json(result);
}
catch (Exception ex)
{
return Json(new { error = ex.Message });
}
}
型号:
var table = $('#myTable').DataTable({
responsive: true,
"serverSide": true,
"ajax": {
"type": "POST",
"url": '/Table/DataHandler',
"contentType": 'application/json; charset=utf-8',
'data': function (data) { return data = JSON.stringify(data); }
},
"drawCallback": function(settings){
$('.card').hide();
},
"paging": true,
"deferRender": true,
"columns": [
{ "data": "RegId" },
{ "data": "PresenceDate" }, etc...
This is how it looks when the table is displayed
正如您所看到的,日期格式不是很好,这也是我想在显示之前格式化数据的原因。对于我最终希望在表中显示的几个TimeSpan对象也是如此。
我仍然是ajax的新手,并且不知道如何以最简单的方式解决这个问题。感谢您的任何意见!
答案 0 :(得分:0)
您可以使用columns.render属性来定义表格单元格的内容,使用自定义js函数来格式化日期。类似的东西:
...
"render": function ( data, type, full, meta ) {
var date = new Date(parseInt(data.substr(6), 0));
return ISODateString(date);
}
格式化日期的功能dd / mmm / yyyy:
function ISODateString(d) {
function pad(n) { return n < 10 ? '0' + n : n }
return pad(d.getDate()) + '/' + pad(d.getMonth() + 1) + '/' + d.getFullYear();
}