当前位置: > > > jQuery - 第三方表格插件DataTables使用详解13(点击展开单元格显示详情)

jQuery - 第三方表格插件DataTables使用详解13(点击展开单元格显示详情)

二十四、点击展开单元格, 并显示详细信息

1,效果图

(1)点击每行头部图标可以将该行展开,显示出详细信息(支持同时展开多行)。

(2)如果已经打开的话,再次点击则是收起。

2,数据文件(data.txt)

{
  "data": [
            {
               "id": "001",
               "name": "张三",
               "birthday": "2015-12-31",
               "email": "open3@qq.com",
               "info": "毕业于华东职业贸易技术学校。"
            },
            {
               "id": "002",
               "name": "李四",
               "birthday": "2001-11-31",
               "email": "lili4@qq.com",
               "info": "小学毕业,现在家务农。"
            },
            {
               "id": "003",
               "name": "王五",
               "birthday": "2011-12-31",
               "email": "kingFive@qq.com",
               "info": "李四的发小,住他家隔壁。"
            }
  ]
}

3,页面代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="js/jquery-3.1.1.js"  type="text/javascript"></script>
    <script src="media/js/jquery.dataTables.js"  type="text/javascript"></script>
    <link rel="stylesheet" href="media/css/jquery.dataTables.css" type="text/css" />
    <style media="screen">
      /** 展开按钮 **/
      td.details-control {
        background: url('./details_open.png') no-repeat center center;
        cursor: pointer;
      }

      /** 收起按钮 **/
      tr.shown td.details-control {
        background: url('./details_close.png') no-repeat center center;
      }
    </style>
    <script type="text/javascript">
      $(document).ready(function() {
        //表格初始化
        var table = $('#myTable').DataTable({
          "ajax": 'data.txt',
          columns: [
              {
                "className":      'details-control',
                "orderable":      false,
                "data":           null,
                "defaultContent": ''
              },
             { data: 'id'},
             { data: 'name'},
             { data: 'birthday'}
          ],
          "order": [[1, 'asc']]
        });

        //给每一行添加展开或收起的监听
        $('#myTable tbody').on('click', 'td.details-control', function () {
            var tr = $(this).closest('tr');
            var row = table.row( tr );

            if ( row.child.isShown() ) {
                //如果该行已经打开,则关闭
                row.child.hide();
                tr.removeClass('shown');
            }
            else {
                //关闭这已行
                row.child( format(row.data()) ).show();
                tr.addClass('shown');
            }
        } );

      });

      /*根据条目数据返回需要显示的详情*/
      function format ( d ) {
          return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
              '<tr>'+
                  '<td>姓名:</td>'+
                  '<td>'+d.name+'</td>'+
              '</tr>'+
              '<tr>'+
                  '<td>邮箱:</td>'+
                  '<td>'+d.email+'</td>'+
              '</tr>'+
              '<tr>'+
                  '<td>简介:</td>'+
                  '<td>'+d.info+'</td>'+
              '</tr>'+
          '</table>';
      }
    </script>
  </head>
  <body>
    <table id="myTable" class="display">
        <thead>
            <tr>
                <th></th>
                <th>编号</th>
                <th>姓名</th>
                <th>出生日期</th>
            </tr>
        </thead>
    </table>
  </body>
</html>
展开关闭图标:image.zip
评论0