zoukankan      html  css  js  c++  java
  • datatable 2table表 联动(点击行控制右边的表格)

    看到这标题,就知道这个业务多复杂了。百度了很久,就是没找到几个很有用的,由于datatable很多种版本,查询的都各种不同。

    在这里,我把我实现的发布出来,希望后面有使用到的,有个提示作用

    样式上需要增加样式

       #group_list_wrapper {
            float: left !important;
            _display: inline;
             30%;
        }
    
        #person_list_wrapper {
            float: right !important;
            _display: inline;
             50%;
        }

    首先页面排布:

     <table class="table table-border table-bordered table-hover table-bg" id="group_list">
                <thead>
                <tr class="text-c">
                    <th style="display: none"></th>
                    <th width="25"><input type="checkbox" name="" value=""></th>
                    <th width="80">名称</th>
                    <th width="100">大小</th>
                    <th width="80">创建时间</th>
                </tr>
                </thead>
                <tbody>
                <c:forEach items="${page.list}" var="c">
                    <tr class="text-c">
                        <td style="display: none">${c.groupId}</td>
                        <td><input type="checkbox" value="${c.groupId}" name="checkbox"></td>
                        <td>${c.name}</td>
                        <td>${c.size}</td>
                        <td><fmt:formatDate value="${c.createTime}" pattern="yyyy-MM-dd"/></td>
                    </tr>
                </c:forEach>
                </tbody>
            </table>
            <table class="table table-border table-bordered table-hover table-bg" id="person_list">
                <thead>
                <tr class="text-c">
                    <th width="80">姓名</th>
                    <th width="100">性别</th>
                    <th width="80">年龄</th>
                    <th width="80">创建时间</th>
                </tr>
                </thead>
                <tbody>
                </tbody>
            </table>

    这里是2个table ,一个id是group_list 另外一个是person_list

    <script type="text/javascript">
        var oTable;
        $(function () {
            oTable = $('#group_list').dataTable({
                "aaSorting": [[2, "desc"]],//默认第几个排序
                "bStateSave": true,//状态保存
                "aoColumnDefs": [
                    {"orderable": false, "aTargets": [0, 1]}// 制定列不参与排序
                ]
            });
          //点击行事件,触发ajax去拿出table的数据,然后展示出来
            oTable.$('tr').click(function () {
                var data = oTable.fnGetData(this);
                var personTable = $('#person_list').dataTable({
                    "aaSorting": [[2, "desc"]],//默认第几个排序
                    "bStateSave": true,//状态保存
    //                "bServerSide": true, //指定从服务器端获取数据 这个加了就把页面的分页无效了
    //                "retrieve": true,//Cannot reinitialise DataTable,解决重新加载表格内容问题 (这种不行)
                    "destroy":true, //Cannot reinitialise DataTable,解决重新加载表格内容问题   这种ok
                    "aoColumnDefs": [
                        {"orderable": false, "aTargets": [0, 1]}// 制定列不参与排序
                    ],
    //                "sAjaxSource": "/dataGrid.json",  
    ////                "fnServerParams": function ( aoData ) {
    ////                    aoData.push({"groupId":data[0]"});
    ////                },
    //                "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
    //                    aoData.push({"name":"groupId","value":data[0]});
                       "ajax" :{
                            "dataType": 'json',
                            "type": "POST",
                            "url": '/dataGrid.json',
                            "data": {"groupId":data[0]},
                        },
    //                },
                    //列表表头字段
                    "columns": [
                        {"data": "personName"},
                        {"data": "sex"},
                        {"data": "age"},
                        {"data": "createTime"},
                    ]
                }).api();
    
                personTable.$('tr').click(function () {
                    var data = oTable.fnGetData(this);
                    layer_show('人员信息', '/detailUI.html?personId=' + data[0], '550', '500');
                });
            });d
        });
    
    </script>

    请求后台,后台返回的数据

      @RequestMapping(value = "dataGrid", method = RequestMethod.POST)
      @ResponseBody
      public Object dataGrid(Student student) throws Exception {
        Page<Student> page =
           studentService.findPage(new Page<Student>(), student);
        Map<String, Object> result = new HashMap<String, Object>();
          result.put("data", page.getList());
    //      map.put("aData", page.getList());//数据集合
    //    String datastr =
    //        "{ 'mData':[{ 'groupId':25543254345325,'groupName' : 'aaa', 'faceSize' : 12288, 'createTime' : false }]}";
        return result;
      }

    放到map里就可以了。原来搞json啥的,都没管用,后面直接用MAP就搞定了。这种相关的文档,真心没找到,我就大概试了下,试出来的。

  • 相关阅读:
    由吃饺子想到的多线程情况下的数据共享问题
    关于伪静态的几个体会
    最近改造的一款可多选的日历插件,已通过兼容性测试
    对kingthy创作的Vtemplate模板引擎的使用心得
    从前辈们整理的数据库优化经验中得到的一点心得分享
    关于近期对Lucene.Net应用研究学习的总结
    对SharpICTCLAS 1.0的一点小小的修改记录
    转 Blob、DataURL、canvas、image的相互转换
    节日_100
    模板生成_100
  • 原文地址:https://www.cnblogs.com/xuerong/p/8688419.html
Copyright © 2011-2022 走看看