在Jquery数据表上渲染列函数(数据,类型,完整),复杂的标头不起作用

时间:2017-06-02 08:00:50

标签: javascript jquery html datatables

我是jquery的新手,并尝试使用复杂的标头从json响应中设计数据表。

到目前为止,数据是根据需求填充的,但现在我想根据json数据或基于其他列数据更改同一数据表中的一些列数据。

在一个简单的jquery数据表中,使用函数(数据,类型,完整)的渲染列功能有助于通过编写完整的[columnIndex]来访问其他列,但是在复杂的头数据表上它不起作用并给出未定义的值

请帮助我,让我知道应该编写什么代码,以便动态访问数据表的其他列。

这是我的代码:

<head>
  ...
  <script type="application/ld+json">
    {
      "@context":"http://schema.org",
      ...
    }
  </script>
</head>

我的数据表现在看起来像这样: preview of my datatable

在哪里可以看到$('#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(&#39;' + event + '&#39;,&#39;' + full[1] + '&#39;,&#39;approve&#39;,&#39;' + full[4] + '&#39;,&#39;' + +'&#39;);">Approve</input><br/><input align="left" id="radio2" type="radio" name="action" value="Reject" onclick="updateEvent(&#39;' + event + '&#39;,&#39;' + full[1] + '&#39;,&#39;reject&#39;,&#39;' + full[4] + '&#39;,&#39;' + +'&#39;);">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>'; } } ] }); 列,该列应该按照渲染功能提供一个单选按钮,但现在提供数据数组

1 个答案:

答案 0 :(得分:0)

好的,所以在经过多次打击和试用后我也找到了解决方案。 在内部渲染函数(数据,类型,完整)中,我们得到的行数据数组是完整的,所以要获得任何一个列值,我们必须使用键实际从数组中获取它,并且键与json对象。

因此,如果我想在任何其他列中获取eventId,那么代码将如下所示:

       function(data,type,full){
         var eventId = full['eventId'];
         return eventId;
        }