Мне нужно динамически генерировать html-таблицу и указывать список driver_id внизу.Это что-то похожее на pivot, но проблема в том, что zone_name может меняться каждый день.Я использую jquery и linq.js.
пока что я попробовал:
var data =
[
{
"ColorCode": "green",
"StatusName": "ACTIVE",
"rankId": 0,
"zone_name": "Zone A",
"driver_id": 100,
"zone_rank": 1,
"status_id": null,
"company_id": null,
"updated_on": null,
"Driver": null,
"login_status": null
},
{
"ColorCode": "yellow",
"StatusName": "BREAK",
"rankId": 0,
"zone_name": "Zone B",
"driver_id": 101,
"zone_rank": 1,
"status_id": null,
"company_id": null,
"updated_on": null,
"Driver": null,
"login_status": null
},
{
"ColorCode": "green",
"StatusName": "ACTIVE",
"rankId": 0,
"zone_name": "Zone A",
"driver_id": 102,
"zone_rank": 4,
"status_id": null,
"company_id": null,
"updated_on": null,
"Driver": null,
"login_status": null
}
]
var zTable = document.getElementById('tblZoneRank');
var allzones = Enumerable.From(data)
.Distinct(p => p.zone_name)
.Select(p => p.zone_name).ToArray();
$.each(allzones, function (i, item) {
var tr = document.createElement('tr');
var td = document.createElement("td");
var txt = document.createTextNode(item);
td.appendChild(txt);
tr.appendChild(td);
var childItem = Enumerable.From(data)
.Where(p => p.zone_name == item)
.ToArray();
$.each(childItem, function (j, citem) {
var ctd = document.createElement("td");
var ctxt = document.createTextNode(citem.driver_id);
ctd.appendChild(ctxt);
$(ctd).css('background-color', citem.ColorCode);
tr.appendChild(ctd);
});
zTable.appendChild(tr);
});
Это дает мне вывод таким образом:
<table id="tblZoneRank">
<tr>
<td>Zone A</td>
<td style="background-color: rgb(0, 128, 0);">100</td>
<td style="background-color: rgb(0, 128, 0);">102</td>
</tr>
<tr>
<td>Zone B</td>
<td style="background-color: rgb(255, 255, 0);">101</td>
</tr>
</table>
но мне нужен вывод в следующем формате: он должен отображать имя_зоны в качестве имени столбца и под драйвером_id, а первый идентификатор должен быть zone_rank 1 и 2 и т. Д.