【日常笔记】datatables表格数据渲染

 

现在有很多表格渲染方式 这里只是记录怎么使用datatables渲染数据

使用datatables可以更方便的来渲染数据

【中文api】http://datatables.club/index.html

事件api文档:http://datatables.club/reference/option/

在datatables中获取后台自定义的键值对:

initComplete: function (settings,data) {
// settings中有个json属性 可以在里面获取返回的数据对象
},
drawCallback: function(settings,data ) {
// settings中有个json属性 可以在里面获取返回的数据对
}

 

数据渲染:html代码

  <table  class="table table-striped table-bordered dataTable" id="js_table">
                        <thead>
                            <tr >
                                <th class="text-center">编号</th>
                                <th class="text-center">服务类型</th>
                                <th class="text-center">图标</th>
                                <th class="text-center">修改时间</th>
                                <th class="text-center">状态</th>
                                <th class="text-center">操作</th>
                            </tr>
                        </thead>
                        <tbody></tbody>
                    </table>

引入相关js :注这是中文api的css、js地址 需要更改为你自己的本地地址

 

<!-- DataTables CSS -->
<link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.7/css/jquery.dataTables.css">

<!-- jQuery -->
<script type="text/javascript" charset="utf8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>

<!-- DataTables -->
<script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.7/js/jquery.dataTables.js"></script>

 本地js

 <!-- dataTables -->
    <link href="~/css/dataTables.bootstrap.min.css" rel="stylesheet" />
    <script src="~/js/jquery.dataTables.js"></script>
    <script src="~/js/dataTables.bootstrap.min.js"></script>

 

 

 

 

js代码

//渲染列表  页面初始化时
        var t = $("#js_table").DataTable({
            "processing": true,
            "searching": false,//关闭搜索框
            "serverSide": true,//服务器分页
            "ajax": {
                "url": "/Function/GetMenuData",
                "dataSrc": "list",//这里是后台返回的数据对象
                "data": function (d) {//d 是原始的发送给服务器的数据,默认很长。
                    var param = {};//因为服务端排序,可以新建一个参数对象
                    param.start = d.start;//开始的序号
                    param.length = d.length;//要取的数据的条数
                    return param;//自定义需要传递的参数。
                }
            }, "createdRow": function (row, data, index) {
                /* 设置表格中的内容居中 */
                $('td', row).attr("class", "text-center");
            },
            //定义列: 取相应属性字段
            "columns": [

                { "data": "name" },
                { "data": "serialNumber" },
                { "data": "url" },
                {
                    "data": "type",
                    "render": function (data, type, full, callback) {
                        //类型:0导航菜单;1操作按钮。
                        switch (data) {
                            case 0: return "导航菜单"; break;
                            case 1: return "操作按钮 "; break;
                        }
                    }
                },
                { "data": "remarks" },
              //操作列
                {
                    "data": "id",//json
                    "render": function (data, type, full, callback) {
                        return ('<a class="btn btn-info"    data-toggle="modal" data-target="#modal-addOrUpdate" onclick="details(\'' + data + '\');" >禁用</a><a class="btn btn-info"    data-toggle="modal" data-target="#modal-addOrUpdate" onclick="details(\'' + data + '\');" >删除</a>');
                    }
                }
            ],
            "language": {
                "lengthMenu": "每页 _MENU_ 条记录",
                "zeroRecords": " ",
                "info": "当前 _START_ 条到 _END_ 条 共 _TOTAL_ 条",
                "infoEmpty": "无记录",
                "infoFiltered": "(从 _MAX_ 条记录过滤)",
                "search": "用户",
                "processing": "载入中",
                "paginate": {
                    "first": "首页",
                    "previous": "上一页",
                    "next": "下一页",
                    "last": "尾页"
                }
            },
            "aLengthMenu": [
                [10, 25, 50, 100], [10, 25, 50, 100]
            ],
            "paging": true,//分页
"pagingType": "full_numbers",//显示首页尾页 "ordering": false,//排序 "info": true,//信息 "paging": true, initComplete: function (settings, data) { }, "drawCallback": function (settings, data) { } });

 

 后台数据:这里是java后台

public Map<String, Object> queryLifeType(String village, Integer pageIndex, Integer pageSize) {
        Map<String, Object> map = new HashMap<String, Object>();
        //分页排序
        Page<?> pageSelect = PageHelper.startPage(pageIndex, pageSize, " row_add_time desc ");
        //
        LifeType example=new LifeType();
        if (!StringUtils.isEmpty(village)) {
            //根据小区查询
            example.setVillageid(village);
        }
         //查询数据
        List<LifeType> selectByExample=lifeTypeMapper.selectByExample(example);
    
        map.put("recordsTotal", pageSelect.getTotal());//这是总页数
        map.put("recordsFiltered", pageSelect.getTotal());//这里是记录总条数
        map.put("list",selectByExample);//这里对应页面js的  "dataSrc":"list",//这里是后台返回的数据对象
        return map;
}

 c#后台返回格式

   Dictionary<string, object> entity = new Dictionary<string, object>();
   List<Menu> treeModels = con.Query<Menu>("SELECT Id,ParentId as Parent,`Name` as Text from  menu").ToList();
   entity.Add("recordsTotal", treeModels.Count);
   entity.Add("recordsFiltered", treeModels.Count);
   entity.Add("list", treeModels);
   return Json(entity);

 

posted @ 2016-05-20 15:04  ice.ko  阅读(19308)  评论(0编辑  收藏  举报