【问题标题】:Datatable button expand/collapse row JQuery数据表按钮展开/折叠行 JQuery
【发布时间】:2019-12-24 08:01:12
【问题描述】:

我正在使用 jQuery Datatable,我想添加一个按钮来展开/折叠我的表格的所有行。但是当我已经展开行时,我有一个展开的问题,我点击按钮 expandALL 我首先展开的行现在被折叠,另一个展开..或者如果我做相反的事情,他将被展开,另一个坍塌 .. 即使我已经有一个展开,我该如何展开所有行(与折叠相同)

    function init() {
      Docu.table = $('.js-table-doc').DataTable(dataTableSettngs());
      $('#btn-show-all-doc').on('click', expandCollapseAll);
    }

function dataTableSettings() {
            return {
                responsive: {
                    details: {
                      type: 'column'
                    }
                },
                serverSide: true,
                searching: false,
                columnDefs: [
                             {targets: [0, 8], orderable: false}}
                  ], 
                 columns: [{data: 'id'},
                          {data: 'name'}]
          }

function expandCollapseAll() {
        Document.table.rows(':not(.parent)').nodes().to$().find('td:first-child').trigger('click').length ||
        Document.table.rows('.parent').nodes().to$().find('td:first-child').trigger('click')

        }

【问题讨论】:

    标签: javascript jquery datatable


    【解决方案1】:

    您的代码只有打开的操作。关闭

    table.rows('.parent').nodes().to$().find('td:first-child').trigger('click')
    

    https://www.gyrocode.com/articles/jquery-datatables-how-to-expand-collapse-all-child-rows/#responsive

    var table = $('#example').DataTable({
      responsive: {
        details: {
          type: 'column'
        }
      },
      columnDefs: [{
        className: 'control',
        orderable: false,
        targets: 0
      }],
      order: [1, 'asc']
    });
    
    $('#btn-show-all-doc').on('click', expandCollapseAll);
    
    function expandCollapseAll() {
      table.rows('.parent').nodes().to$().find('td:first-child').trigger('click').length || 
      table.rows(':not(.parent)').nodes().to$().find('td:first-child').trigger('click')
    }
    <link href="https://cdn.datatables.net/responsive/2.2.3/css/responsive.dataTables.min.css" rel="stylesheet" />
    <link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet" />
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/responsive/2.2.3/js/dataTables.responsive.min.js"></script>
    
    <button id="btn-show-all-doc">Expand / Collapse</button>
    
    <table id="example" class="display nowrap" style="width:100%">
      <thead>
        <tr>
          <th></th>
          <th class="all">First name</th>
          <th class="all">Last name</th>
          <th class="all">Position</th>
          <th class="all">Office</th>
          <th class="all">Age</th>
          <th class="none">Start date</th>
          <th class="none">Salary</th>
          <th class="none">Extn.</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td></td>
          <td>Tiger</td>
          <td>Nixon</td>
          <td>System Architect</td>
          <td>Edinburgh</td>
          <td>61</td>
          <td>2011/04/25</td>
          <td>$320,800</td>
          <td>5421</td>
        </tr>
        <tr>
          <td></td>
          <td>Garrett</td>
          <td>Winters</td>
          <td>Accountant</td>
          <td>Tokyo</td>
          <td>63</td>
          <td>2011/07/25</td>
          <td>$170,750</td>
          <td>8422</td>
        </tr>
        <tr>
          <td></td>
          <td>Ashton</td>
          <td>Cox</td>
          <td>Junior Technical Author</td>
          <td>San Francisco</td>
          <td>66</td>
          <td>2009/01/12</td>
          <td>$86,000</td>
          <td>1562</td>
        </tr>
        <tr>
          <td></td>
          <td>Cedric</td>
          <td>Kelly</td>
          <td>Senior Javascript Developer</td>
          <td>Edinburgh</td>
          <td>22</td>
          <td>2012/03/29</td>
          <td>$433,060</td>
          <td>6224</td>
        </tr>
        <tr>
          <td></td>
          <td>Airi</td>
          <td>Satou</td>
          <td>Accountant</td>
          <td>Tokyo</td>
          <td>33</td>
          <td>2008/11/28</td>
          <td>$162,700</td>
          <td>5407</td>
        </tr>
        <tr>
          <td></td>
          <td>Brielle</td>
          <td>Williamson</td>
          <td>Integration Specialist</td>
          <td>New York</td>
          <td>61</td>
          <td>2012/12/02</td>
          <td>$372,000</td>
          <td>4804</td>
        </tr>
      </tbody>
    </table>

    【讨论】:

    • 谢谢,它适用于展开..但是当行展开并且我再次单击按钮时,行没有折叠..我编辑了该主题的代码
    • 所有行都展开时折叠。如果至少有一个展开,您要折叠行吗?
    • 是的,我想要这个 .. 对于我现在的情况,当所有行都展开时,我无法折叠
    • @user1814879 看了多遍还是不清楚自己想要什么?给出完整的案例列表
    • 我更新了我的代码,但这很奇怪..同样的问题..如果我展开一行并单击展开/折叠按钮,另一行展开并且第一个展开的是折叠(例如:默认为 10 行,我展开 1 行,单击按钮,展开 9 行,这一行折叠)
    猜你喜欢
    • 2018-03-06
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 2018-01-25
    • 2020-11-21
    • 1970-01-01
    相关资源
    最近更新 更多