如何使用JQuery数据表显示匿名类型?

时间:2018-07-16 03:13:58

标签: javascript c# asp.net-mvc

获取动态对象并将其转换为使用以下代码的Json:

dynamic realTimeData = db.Database.DynamicSqlQuery("exec QueryRealTimeData @treeId", new SqlParameter("@treeId", treeId));

int draw = Request["draw"] != null ? int.Parse(Request["draw"]) : 1;

var jsonDataTemp = new {
  data = realTimeData,
    draw = draw
};

return Json(jsonDataTemp, JsonRequestBehavior.AllowGet);

发现转换的Json格式(以下格式1)不是我需要的格式:

{
  "data": [{
    "B01-Rtd": 10.285,
    "001-Rtd": 7.522,
    "011-Rtd": 20.903
  }, {
    "B01-Rtd": 10.031,
    "001-Rtd": 7.518,
    "011-Rtd": 20.903
  }],
  "draw": 1
}

实际上,我需要将JQuery DataTables的数据源转换为以下格式(格式2):

[{
  "COLUMNS": [
    {"title": "B01-Rtd"},
    {"title": "001-Rtd"},
    {"title": "011-Rtd"}
  ],
  "DATA": [
    ["10.285", "7.522", "20.903"],
    ["10.031", "7.518", "20.903"]
  ],
  "draw": 1
}]

询问如何转换为格式2,或如何将格式1数据用于DataTables数据源?

注意我这是动态生成的匿名对象,事先不知道哪些列,没有显式初始化列,需要动态生成类似两种Json格式,然后使用类似以下JS初始化的DataTables:

$('#example').dataTable({
  "data": dataObject[0].DATA,
  "columns": dataObject[0].COLUMNS
});

或者还有其他方法可以显示带有数据表的匿名类型吗?

1 个答案:

答案 0 :(得分:0)

var dataObject = [{
  "data": [{
    "B01-Rtd": 10.285,
    "001-Rtd": 7.522,
    "011-Rtd": 20.903
  }, {
    "B01-Rtd": 10.031,
    "001-Rtd": 7.518,
    "011-Rtd": 20.903
  }],
  "draw": 1
}];

var data = [],
  columns = [];

if (dataObject.length && dataObject[0].data.length) {
  columns = Object.keys(dataObject[0].data[0]).map(x => {
    return {
      title: x
    }
  });
  
  dataObject[0].data.forEach((item, index) => {
    var values = [];
    columns.forEach(x => { 
      values.push(item[x.title]);
    });
    data.push(values);
  });
}
console.log(columns);
console.log(data);

//$('#example').dataTable({
//  "data": data,
//  "columns": columns
//});