datetables----表头变动,隐藏,展开,样式

it2022-12-27  95

需求描述:datetables 写入的列表中, 默认有固定的字段,点击展开之后,可以看见更多的字段, 展开中的字段有一部分是根据返回的长度来显示,比如 一个用户A 只有两个课程,那么展示两个课程字段, 用户B 有四个课程,那么现实四个课程。另一部分是展开之后肯定会显示的 固定的字段

 

1, class 样式定义:

HTML的按钮

点击之后 跳转处理的方法

  var info = dt.page.info();

  var cur_page = info.page;

 dt.page(cur_page).draw('page'); // dt是全局定义的 

网页进来就已经加载了 init 方法

样式定义

  .guding  是 一直显示状态的样式  .show_list 是 点击展开之后会一定有的字段

具体使用:

 'columns':[

                    {

                            "data": "is_add_master",

                            "width": "20%",

                            "sClass":"guding",

                            "title": "是否添加班主任",

                            "data_type": "varchar"

                        },

                   {

                            "data": "course_ctime",

                            "width": "20%",

                            "sClass":"show_list",

                            "title": "购买正式课时间",

                            "data_type": "varchar"

                        },

2,datetables  回调函数 : drawCallback

   每当页面中的所有的数据都加载完毕之后,调用这个方法。

   那么我们就可以根据当前页面是 展开 / 收起 的状态来,给class 样式赋值

  (1), 首先获取 返回data的数据

      var api = this.api();

      var json = api.rows( {page:'current'}).data();

     if (json.length > 0) {

                    var title = json[0]['title_array'];

 

当前 title 就是 返回列表的第一列的 title_array 字段的数据

 我当前的需求, title_array 里放的是 当前列表当前页 , 默认 15条数据中, 以最多课程的用户维度去放开课程的列

我获取到 有五个课程, 那么 我就循环赋值  展开 还是 隐藏的 样式

 

(2) 打入 隐藏还是 展开的样式

            这个的课程初始化隐藏, 我的需求是,所有的用户的课程总共不超过五个,也就是 周一到周五的课程,所以我总共写死五个列,所以初始化首先全部隐藏,然后看当前页返回的 title_array 是多长

 

(3)头部自适应 this.fnAdjustColumnSizing(false);

展开 , 收起, 会导致表头变动,那么就容易样式错乱,就写入这个就可以了,表头自适应

 

(4) 增加一个 跳转到 第几页的样式和功能

回调函数里面增加一下的代码:

  $(".dataTables_paginate").append(" <div class='pagination' style='float:left;margin:0px;padding-top:0px;padding: 0px;'> <input style='border: 0px;font-size: 14px;color: #606266;font-family: Helvetica;background-color: #F0F2F5;outline: none !important;height:28px;line-height:28px;width:40px;' class='margin text-center' id='changePage' type='text'> 页  <a class='btn btn-info' style='margin-bottom:5px;width: 35px;height: 28px;line-height: 28px;text-align:center;padding:0px;' href='javascript:void(0);' id='dataTable-btn'>跳转</a></div>");

                var oTable = $(tableId).dataTable();

                $('#dataTable-btn').click(function(e) {

                    if($("#changePage").val() && $("#changePage").val() > 0) {

                        var redirectpage = $("#changePage").val() - 1;

                    } else {

                        var redirectpage = 0;

                    }

                    oTable.fnPageChange(redirectpage);

                });

 

那么  样式结果 

样式 我给了 固定的相对长度,写死了长度,不然每个td 的长度不一致,不太好看

    thead th, table.dataTable thead td{

        width: 60px !important;

        height: 50% !important;

        word-wrap: break-all !important;

        word-break: normal !important;

        overflow: hidden !important;

    }

    thead th{

        width: 60px !important;

        height: 50% !important;

        word-wrap: break-all !important;

        word-break: normal !important;

        overflow: hidden !important;

    }

 

 

 

 

 

               

 

 

 

 

 

最新回复(0)