zoukankan      html  css  js  c++  java
  • datatables01 安装、数据源、选中行事件、新增一行数据、删除一行数据

    1 安装

      1.1 引入必要文件

        要在项目中使用datatables需要引入三个文件

          》DataTables CSS

          》jQuery

          》DataTables JS

    <!-- DataTables CSS -->
        <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.15/css/jquery.dataTables.css">
         
        <!-- jQuery -->
        <script type="text/javascript" charset="utf8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
         
        <!-- DataTables JS -->
        <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.15/js/jquery.dataTables.js"></script>

      1.2 编写 table 标签

        为 table 标签模拟一些数据即可

        <table id="table_id_example" class="display">
            <thead>
                <tr>
                    <th>Column 1</th>
                    <th>Column 2</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Row 1 Data 1</td>
                    <td>Row 1 Data 2</td>
                </tr>
                <tr>
                    <td>Row 2 Data 1</td>
                    <td>Row 2 Data 2</td>
                </tr>
            </tbody>
        </table>

      1.3 初始化Datatables

        <script type="text/javascript">
            $(document).ready( function () {
                $('#table_id_example').DataTable();
            } );
        </script>

      1.4 源代码

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>安装</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
        <!--第一步:引入Javascript / CSS (CDN)-->
        <!-- DataTables CSS -->
        <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.15/css/jquery.dataTables.css">
         
        <!-- jQuery -->
        <script type="text/javascript" charset="utf8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
         
        <!-- DataTables JS -->
        <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.15/js/jquery.dataTables.js"></script>
    
        <script type="text/javascript">
            $(document).ready( function () {
                $('#table_id_example').DataTable();
            } );
        </script>
    </head>
    <body>
        <table id="table_id_example" class="display">
            <thead>
                <tr>
                    <th>Column 1</th>
                    <th>Column 2</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Row 1 Data 1</td>
                    <td>Row 1 Data 2</td>
                </tr>
                <tr>
                    <td>Row 2 Data 1</td>
                    <td>Row 2 Data 2</td>
                </tr>
            </tbody>
        </table>
    </body>
    </html>
    </html>
    View Code

    2 数据

      DataTables 中有很多的选项可用于配置如何获得表中的数据显示,以及如何处理这些复杂的数据。

      2.1 处理模式

        datatables 中的数据可以进行分页、搜索、排序等功能,这些功能都是针对数据进行的处理,而datatables的数据处理主要由两种模式,两种模式不能同时使用,但是可以动态改变

        2.1.1 客户端处理

          一次性加载所有的数据,所有的数据处理操作都是在浏览器中完成的

        2.1.2 服务器端处理

          数据都是在服务器端进行处理,浏览器仅仅起显示作用

      2.2 数据源类型

        这里的数据源类型是指数据源对应的那个数组所包含元素的类型

        数据源就是一个数组,该数组的元素类型可以用三种形式:数组、对象、实例

        2.2.1 数组

          使用数组类型时 datatables 会自动根据数据进行显示,每一个数组代表一行;每个数组的第n个元素会显示在table标签的第n列;

          技巧01:列和数组元素的下标都是从0开始的

            

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>安装</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
        <!--第一步:引入Javascript / CSS (CDN)-->
        <!-- DataTables CSS -->
        <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.15/css/jquery.dataTables.css">
         
        <!-- jQuery -->
        <script type="text/javascript" charset="utf8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
         
        <!-- DataTables JS -->
        <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.15/js/jquery.dataTables.js"></script>
    
        <script type="text/javascript">
            $(document).ready( function () {
                var data = [
                    [
                        "Tiger Nixon",
                        "System Architect",
                        "Edinburgh",
                        "5421",
                        "2011/04/25",
                        "$3,120"
                    ],
                    [
                        "Garrett Winters",
                        "Director",
                        "Edinburgh",
                        "8422",
                        "2011/07/25",
                        "$5,300"
                    ]
                ];
                $('#table_id_example').DataTable({
                    data: data
                });
            } );
        </script>
    </head>
    <body>
        <table id="table_id_example" class="display">
            <thead>
                <tr>
                    <th>Column 1</th>
                    <th>Column 2</th>
                    <th>Column 3</th>
                    <th>Column 4</th>
                    <th>Column 5</th>
                    <th>Column 6</th>
                </tr>
            </thead>
            
        </table>
    </body>
    </html>
    </html>
    View Code

        2.2.2 对象

          利用对象类型是数据的对应关系不是利用下标,而是利用属性名称记性对应;每个对象表示一行数据,如果对象属性的数量少于table标签中th标签的数量时显示的效果会是空白;利用对象作为数据源中元素的对象使用于从后台获取数据(PS:利用AJAX从后台获取数据)

         

        2.2.3 实例

          利用实例的方式和利用对象的方式几乎一样;利用实例的方式使用于ES6

          待更新...

          2018-4-20 21:48:43

       2.3 数据源

        datatables的数据源主要有:DOM、JavaScript、Ajax

        2.3.1 DOM

          DataTables 初始化后,它会自动检查表格中的数据,即:初始化时会自动检查table标签里面拥有的数据

          坑01:如果你这时使用data或者ajax传递数据将不会显示,而且还会报错;错误信息如下:

            

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>数据源-DOM</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
        <!--第一步:引入Javascript / CSS (CDN)-->
        <!-- DataTables CSS -->
        <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.15/css/jquery.dataTables.css">
         
        <!-- jQuery -->
        <script type="text/javascript" charset="utf8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
         
        <!-- DataTables JS -->
        <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.15/js/jquery.dataTables.js"></script>
    
        <script type="text/javascript">
            $(document).ready( function () {
                var data = [
                    {
                        "name":       "Tiger Nixon",
                        "position":   "System Architect",
                        "salary":     "$3,120",
                        "start_date": "2011/04/25",
                        "office":     "Edinburgh",
                        "extn":       "5421"
                    },
                    {
                        "name":       "Garrett Winters",
                        "position":   "Director",
                        "salary":     "$5,300",
                        "start_date": "2011/07/25",
                        "office":     "Edinburgh",
                        "extn":       "8422"
                    }
                ];
                $('#table_id_example').DataTable({
                    data: data,
                    columns: [
                        { data: 'name' },
                        { data: 'position' },
                        { data: 'salary' },
                        { data: 'office' }
                    ]
                });
            } );
        </script>
    </head>
    <body>
        <table id="table_id_example" class="display">
            <thead>
                <tr>
                    <th>Column 1</th>
                    <th>Column 2</th>
                    <th>Column 3</th>
                    <th>Column 4</th>
                    <th>Column 5</th>
                    <th>Column 6</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>数据 1</td>
                    <td>数据 2</td>
                    <td>数据 3</td>
                    <td>数据 4</td>
                    <td>数据 5</td>
                    <td>数据 6</td>
                </tr>
            </tbody>
            
        </table>
    </body>
    </html>
    </html>
    View Code

            

          技巧01:datatables 还可以直接将 DOM 数据转化为自己的内部数据对象

             

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>数据源-DOM</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
        <!--第一步:引入Javascript / CSS (CDN)-->
        <!-- DataTables CSS -->
        <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.15/css/jquery.dataTables.css">
         
        <!-- jQuery -->
        <script type="text/javascript" charset="utf8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
         
        <!-- DataTables JS -->
        <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.15/js/jquery.dataTables.js"></script>
    
        <script type="text/javascript">
            $(document).ready( function () {
                
                var table = $('#table_id_example').DataTable({
                 //这样配置后,即可用DT的API来访问表格数据
                    columns: [
                        {data: "a"}, // 技巧:这里的字段名可以任意指定,因为datatables中的数据是来源于DOM数据
                        {data: "b"}
                    ]
                });
    
                //给行绑定选中事件
                $('#table_id_example tbody').on( 'click', 'tr', function () { // 单击table中的tr标签触发该方法
                    if ($(this).hasClass('selected')) { // 给被单击的tr方法添加一个 class
                        $(this).removeClass('selected');
                    }
                    else {
                        table.$('tr.selected').removeClass('selected');
                        $(this).addClass('selected');
                    }
                    console.log(table.row('.selected').data()); // 利用 DataTables 对象去获取被单击的tr中的数据并打印
                } );
            } );
        </script>
    </head>
    <body>
        <table id="table_id_example" class="display">
            <thead>
                <tr>
                    <th>Column 1</th>
                    <th>Column 2</th>
                   
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Row 1 Data 1</td>
                    <td>Row 1 Data 2</td>
                </tr>
                <tr>
                    <td>Row 2 Data 1</td>
                    <td>Row 2 Data 2</td>
                </tr>
            </tbody>
            
        </table>
    </body>
    </html>
    </html>
    View Code

          技巧02:如果使用data传递数据,也可以对表格的进行选中事件绑定

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>数据源中元素类型是对象</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
        <!--第一步:引入Javascript / CSS (CDN)-->
        <!-- DataTables CSS -->
        <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.15/css/jquery.dataTables.css">
         
        <!-- jQuery -->
        <script type="text/javascript" charset="utf8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
         
        <!-- DataTables JS -->
        <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.15/js/jquery.dataTables.js"></script>
    
        <script type="text/javascript">
            $(document).ready( function () {
                var data = [
                    {
                        "name":       "Tiger Nixon",
                        "position":   "System Architect",
                        "salary":     "$3,120",
                        "start_date": "2011/04/25",
                        "office":     "Edinburgh",
                        "extn":       "5421"
                    },
                    {
                        "name":       "Garrett Winters",
                        "position":   "Director",
                        "salary":     "$5,300",
                        "start_date": "2011/07/25",
                        "office":     "Edinburgh",
                        "extn":       "8422"
                    }
                ];
                var table = $('#table_id_example').DataTable({
                    data: data,
                    columns: [
                        { data: 'name' },
                        { data: 'position' },
                        { data: 'salary' },
                        { data: 'office' }
                    ]
                });
    
    
                //给行绑定选中事件
                $('#table_id_example tbody').on( 'click', 'tr', function () { // 单击table中的tr标签触发该方法
                    if ($(this).hasClass('selected')) { // 给被单击的tr方法添加一个 class
                        $(this).removeClass('selected');
                    }
                    else {
                        table.$('tr.selected').removeClass('selected');
                        $(this).addClass('selected');
                    }
                    console.log(table.row('.selected').data()); // 利用 DataTables 对象去获取被单击的tr中的数据并打印
                } );
    
            } );
        </script>
    </head>
    <body>
        <table id="table_id_example" class="display">
            <thead>
                <tr>
                    <th>Column 1</th>
                    <th>Column 2</th>
                    <th>Column 3</th>
                    <th>Column 4</th>
                </tr>
            </thead>
            
            
        </table>
    </body>
    </html>
    </html>
    View Code

        2.3.2 JavaScript

          datatables可以利用形式的数据类型记性初始化,初始化过后可以利用 row.add() 添加一行数据,利用 rows().remove() 去删除选中的数据

            

            

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>添加数据</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
        <!--第一步:引入Javascript / CSS (CDN)-->
        <!-- DataTables CSS -->
        <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.15/css/jquery.dataTables.css">
         
        <!-- jQuery -->
        <script type="text/javascript" charset="utf8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
         
        <!-- DataTables JS -->
        <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.15/js/jquery.dataTables.js"></script>
    
        <script type="text/javascript">
            $(document).ready( function () {
                
                var table = $('#table_id_example').DataTable({
                 //这样配置后,即可用DT的API来访问表格数据
                    columns: [
                        {data: "a"}, // 技巧:这里的字段名可以任意指定,因为datatables中的数据是来源于DOM数据
                        {data: "b"}
                    ]
                });
    
                //给行绑定选中事件
                $('#table_id_example tbody').on( 'click', 'tr', function () { // 单击table中的tr标签触发该方法
                    if ($(this).hasClass('selected')) { // 给被单击的tr方法添加一个 class
                        $(this).removeClass('selected');
                    }
                    else {
                        table.$('tr.selected').removeClass('selected');
                        $(this).addClass('selected');
                    }
                    console.log(table.row('.selected').data()); // 利用 DataTables 对象去获取被单击的tr中的数据并打印
                } );
    
    
                $("#addData").on('click', function() {
                    alert('即将添加数据');
                    table.row.add({
                        "a": "wys",
                        "b": "重庆"
                    }).draw();
                });
    
                $("#delData").on('click', function() {
                    alert("即将删除选中的数据");
                    table
                        .row('.selected')  // 获取选中的行(选中的行会有一个名为selected的class,因为我们进行了行选中时间绑定)
                        .remove() // 移除选中的行
                        .draw(); // 刷新
    
                });
    
            } );
        </script>
    </head>
    <body>
        <button id="addData">点击添加一行数据</button>
        <hr />
        <button id="delData">删除选中的数据</button>
        <table id="table_id_example" class="display">
            <thead>
                <tr>
                    <th>Column 1</th>
                    <th>Column 2</th>
                   
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Row 1 Data 1</td>
                    <td>Row 1 Data 2</td>
                </tr>
                <tr>
                    <td>Row 2 Data 1</td>
                    <td>Row 2 Data 2</td>
                </tr>
            </tbody>
            
        </table>
    </body>
    </html>
    </html>
    View Code

      

          

  • 相关阅读:
    27. Remove Element
    列表变成字典
    1. Two Sum
    CVPR2019:What and How Well You Performed? A Multitask Learning Approach to Action Quality Assessment
    959. Regions Cut By Slashes
    118. Pascal's Triangle
    loj3117 IOI2017 接线 wiring 题解
    题解 NOI2019 序列
    题解 省选联考2020 组合数问题
    题解 Educational Codeforces Round 90 (Rated for Div. 2) (CF1373)
  • 原文地址:https://www.cnblogs.com/NeverCtrl-C/p/8894028.html
Copyright © 2011-2022 走看看