javascript - 将数据表行子级与通过 foreach 显示的列表一起使用

标签 javascript jquery datatables

我的数据表插件有问题。

在我的项目中,有一个表,我在其中使用 foreach 显示 Java 列表(我将其放在 Spring 的 session 中)。

我正在尝试将此插件应用于我的表,但没有成功。

这是我的 table :

<table id="myTable">
    <thead>
        <tr>        
            <th>Detail</th> 
            <th>Name</th>
            <th>Surname</th>
            <th>Age</th>
            <th>City</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each=" view_Object : ${list}">
            <td></td>
            <td>${view_Object.name}</td>
            <td>${view_Object.surname}</td>
            <td>${view_Object.age}</td>
            <td>${view_Object.city}</td>                                                            
        </tr>
    </tbody>
</table>

此列表中的每个对象,其内部都有一个列表(此列表包含我单击详细信息按钮时想要显示的元素)。

因此,我不需要执行 Ajax 调用,因为详细信息元素已经在显示的对象(行)中。

但是我不知道该怎么做。这可能吗?

我尝试单独使用该插件来学习它,但一无所获。

这是jsfiddle取自 documentation 。它不起作用,因为没有数据可显示。文档使用:

"ajax": "../ajax/data/objects.txt"

但是,我应该使用什么?

还有另一种方法,通过数据表,来做我想做的事情?

最佳答案

SOLUTION

您可以使用columns.visible选项隐藏包含额外详细信息的列,然后在 format() 函数中显示该数据。

查看带有 ID example 的表格的示例代码,根据您的需要进行调整。

/* Formatting function for row details - modify as you need */
function format ( d ) {
    // `d` is the original data object for the row
    return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
        '<tr>'+
            '<td>Age:</td>'+
            '<td>'+d.age+'</td>'+
        '</tr>'+
        '<tr>'+
            '<td>Start date:</td>'+
            '<td>'+d.start_date+'</td>'+
        '</tr>'+
        '<tr>'+
            '<td>Sallary:</td>'+
            '<td>'+d.salary+'</td>'+
        '</tr>'+
    '</table>';
}

$(document).ready(function() {
    var table = $('#example').DataTable( {
        "columns": [
            {
                "className":      'details-control',
                "orderable":      false,
                "data":           null,
                "defaultContent": ''
            },
            { "data": "name" },
            { "data": "position" },
            { "data": "office" },
            { "data": "age", "visible": false },
            { "data": "start_date", "visible": false },
            { "data": "salary", "visible": false }
        ],
        "order": [[1, 'asc']]
    } );

    // Add event listener for opening and closing details
    $('#example tbody').on('click', 'td.details-control', function () {
        var tr = $(this).closest('tr');
        var row = table.row( tr );

        if ( row.child.isShown() ) {
            // This row is already open - close it
            row.child.hide();
            tr.removeClass('shown');
        }
        else {
            // Open this row
            row.child( format(row.data()) ).show();
            tr.addClass('shown');
        }
    } );
} );

DEMO

参见this jsFiddle用于代码和演示。

关于javascript - 将数据表行子级与通过 foreach 显示的列表一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34500453/

相关文章:

javascript - 获取 WP Tinymce 的内容

javascript - 在水平点击 div 时切换 div

javascript - 在 Angular Datatable 中的 jQuery ColumnFIlterWidget 插件中隐藏/删除额外的下拉小部件

jquery - 使用 Bootstrap 和 ColVis 的数据表

javascript - document.forms[i] 代码在页面中有效,但在 Greasemonkey 中出现 "undefined"错误

JavaScript 添加函数,调用次数不限

javascript - 如何在mvc中的jquery中使用@符号

javascript - 为什么我在执行 Django 时会收到此 javascript 错误?

javascript - 数据表允许对动态加载的列进行排序

javascript - AngularJS 和 Django : Conflicting routing