我是jquery的新手,并尝试使用复杂的标头从json响应中设计数据表。
到目前为止,数据是根据需求填充的,但现在我想根据json数据或基于其他列数据更改同一数据表中的一些列数据。
在一个简单的jquery数据表中,使用函数(数据,类型,完整)的渲染列功能有助于通过编写完整的[columnIndex]来访问其他列,但是在复杂的头数据表上它不起作用并给出未定义的值
请帮助我,让我知道应该编写什么代码,以便动态访问数据表的其他列。
这是我的代码:
<head>
...
<script type="application/ld+json">
{
"@context":"http://schema.org",
...
}
</script>
</head>
在哪里可以看到$('#example').dataTable({
"responsive": true,
"aaData": data,
"aoColumns": [{
"sTitle": "EVENT ID",
"defaultContent": "",
"mData": "eventId",
"render": function(val, type, full) {
//alert("event id :: " + val + " ::: " + full[0]+" ::: " );
return '<td id=event>' + val + '</td>';
}
},
{ "mData": "ecid_1.ecid" },
{ "mData": "ecid_1.name" },
{ "mData": "ecid_1.address" },
{ "mData": "ecid_2.ecid" },
{ "mData": "ecid_2.name" },
{ "mData": "ecid_2.address" },
{
"sTitle": "EVENT DATE",
"defaultContent": ""
},
{
"defaultContent": "",
"render": function(val, type, full) {
var event = full[0];
//data[0].eventId
alert(event);
if (val == "" || val == null) {
//alert('<input align="left" id="radio1" type="radio" name="action'+i+'" value="Approve">Approve</input><br/><input align="left" id="radio2" type="radio" name="action'+i+'" value="Reject">Reject</input>');
return '<input align="left" id="radio1" type="radio" name="action" value="Approve" onclick="updateEvent('' + event + '','' + full[1] + '','approve','' + full[4] + '','' + +'');">Approve</input><br/><input align="left" id="radio2" type="radio" name="action" value="Reject" onclick="updateEvent('' + event + '','' + full[1] + '','reject','' + full[4] + '','' + +'');">Reject</input>';
} else {
return val;
}
//alert("action:::"+data);
}
},
{
"sTitle": "ACTION DATE",
"defaultContent": ""
},
{
"sTitle": "ACTION COMMENTS",
"defaultContent": "",
"render": function(data, type, full) {
if (full[4] == "" || full[4] == null) {
//alert('<input align="left" id="radio1" type="radio" name="action'+i+'" value="Approve">Approve</input><br/><input align="left" id="radio2" type="radio" name="action'+i+'" value="Reject">Reject</input>');
return '<textarea id="comment" type="text" name="comment" value"aaa"></textarea>';
} else {
return '<textarea readonly style="background-color:#D3D3D3;" id="comment" name="comment">' + data + '</textarea>';
}
//alert("action:::"+data);
}
},
{
"render": function(data, type, full) {
var table = $('#example').DataTable();
var rowIndex = $(this).closest('tr').index();
//alert(full[2]);
return '<a href="/MatchMergeAPI/jsp/details.jsp#someRoute?ecid1=' + full[1] + '&ecid2=' + full[2] + '&event=' + full[0] + '"><img src="/MatchMergeAPI/img/eventDetails.jpeg" alt="" style="width: 120px; height: 50px;" /></a>';
}
}
]
});
列,该列应该按照渲染功能提供一个单选按钮,但现在提供数据数组
答案 0 :(得分:0)
好的,所以在经过多次打击和试用后我也找到了解决方案。 在内部渲染函数(数据,类型,完整)中,我们得到的行数据数组是完整的,所以要获得任何一个列值,我们必须使用键实际从数组中获取它,并且键与json对象。
因此,如果我想在任何其他列中获取eventId,那么代码将如下所示:
function(data,type,full){
var eventId = full['eventId'];
return eventId;
}