【问题标题】:JQuery Datatables: How to add child row?JQuery Datatables:如何添加子行?
【发布时间】:2015-02-06 22:29:25
【问题描述】:

Datatables 是否使用 css 标记定义子行?我有一个包含子行的 HTML 表。我想将这些设置为数据表中的子行,以便在排序时它们与父行保持一致。我找不到对将一行标记为子行的 css 类的引用。

我能找到的只是 JQuery row.child() 函数,您可以在其中将子行添加到行中,但我对 JQuery 不太熟悉,无法弄清楚如何在此处添加行。

请看这个JSFiddle。 (单击“程序”进行排序,单击列表图标展开/折叠子行)。

<table id="tprogram" class="table table-striped table-hover ">
<thead>
    <tr>
        <th class='icon_colunm no-sort'></th>
        <th>Program</th>

    </tr>
</thead>
<tbody>
    <tr>
        <td class="text-right"> <i class="btn btn-xs fa fa-list-ul" data-toggle="collapse" data-target=".collapsed1"></i>
        </td>
        <td class='name'>A</td>
    </tr>
    <tr class="collapse collapsed1">
        <td class="text-right"> <i class="fa fa-minus"></i></td>
        <td class='name'>a</td></tr>
    <tr>
        <td class="text-right"> <i class="btn btn-xs fa fa-list-ul" data-toggle="collapse" data-target=".collapsed2"></i>
        </td>
        <td class='name'>B</td></tr>
    <tr class="collapse collapsed2">
        <td class="text-right"> <i class="fa fa-minus"></i>
        </td>
        <td class='name'>a</td></tr>
    <tr class="collapse collapsed2">
        <td class="text-right"> <i class="fa fa-minus"></i>
        </td>
        <td class='name'>b</td></tr>
    <tr class="collapse collapsed2">
        <td class="text-right"> <i class="fa fa-minus"></i>
        </td>
        <td class='name'>c</td>
    </tr>
</tbody>

 $(document).ready(function() {
    $('#tprogram').dataTable({
        "bPaginate":    true,
        "bSort":        true,
        "bInfo":        false,
        "bFilter":      true,
        "bAutoWidth":   false,
        "LengthChange": false,
        "iDisplayLength": 50,
    });

    $('#tprogram').on('click', '.fa-list-ul', 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(*?*).show();
            tr.addClass('shown');
        }
    });

});

【问题讨论】:

    标签: javascript jquery twitter-bootstrap jquery-datatables


    【解决方案1】:

    我决定将我自己的类插入父行并使用 row.add() 函数通过一些 JQuery 手动添加子行。

        $('.parentrow').closest('tr').each(function(){
            var row = table.row(this);
            childrows = $(this).closest('tr').nextUntil('.parentrow');
            row.child(childrows).show();
        });
    

    【讨论】:

    • 完美运行。数据表应该通过向行添加一个类来简单地做到这一点。
    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    相关资源
    最近更新 更多