zoukankan      html  css  js  c++  java
  • jquery.dataTables自定义操作列的实现

    话不多说,首先肯定还是先引用两个插件,jquery插件和jquery.dataTables插件;然后 javaScript 代码如下;都是一些比较常用的参数,本示例是通过ajax后台分页渲染实现的列表;具体可参考上一篇

    本篇主要讲新增自定义列,表格头部thead中新增操作列   <th>操作</th> ;

    Html代码:

    <table class="ax-table ax-hover ax-stripe ax-border ax-align-left" id="airport">
        <thead>
            <tr>
                <th>序号</th>
                <th>名称</th>
                <th>性别</th>
                <th>创建时间</th>
                <th>昵称</th>
                <th>企业代码</th>
                <th>操作</th>
            </tr>
        </thead>
    </table>

    然后在js中的DataTable初始化中,添加 columnDefs ;第一个大括号里是对表格的第六列添加样式;最后一列是新增的操作列,主要是对数据的预览和删除;这里的data的值通过打印发现是返回信息中未用到的Name字段,并不是我们想要的id;

    id的实际取值格式为full.id,可以自行打印试下。

     columnDefs: [
                            // 将companyCode列变为红色
                            {
                                "targets": [5], // 目标列位置,下标从0开始
                                "data": "salary", // 数据列名
                                "render": function (data, type, full) { // 返回自定义内容
                                    return "<span style='color:blue;'>" + data + "</span>";
                                }
                            },
                            // 增加一列,包括删除和修改,同时将我们需要传递的数据传递到链接中
                            {
                                "targets": [6], // 目标列位置,下标从0开始
                                "data": "name", // 数据列名
                                "render": function (data, type, full) { // 返回自定义内容
                                    console.log(data);
                                    return "<a href='/User/UserInfo?id=" + full.id + "'>预览</a>&nbsp;<a href='/User/Delete?id=" + full.id + "'>删除</a>";
                                }
                            }
                  ]

    完整的dataTable初始化代码如下:

    JavaScript代码:

      $('#airport').DataTable({
                        processing: true,
                        serverSide: true, //服务端分页
                        paging: true,
                        pageLength: 10,//分页大小
                        deferRender: true,
                        // "sAjaxDataProp" : "aData",//是服务器分页的标志,必须有
                        // "fnServerData": retrieveData,//分页回调函数
                        ajax: function (data, callback, settings) {//ajax配置为function,手动调用异步查询
                            var searchParams = {};
                            searchParams.pageSize = data.length;
                            searchParams.pageIndex = data.start % data.length === 0 ?
                                (data.start / data.length + 1) : ((data.start % data.length) + 2);
                            $.ajax({
                                type: "post",
                                url: "/User/GetJson",
                                cache: false, //禁用缓存
                                data: searchParams, //传入已封装的参数
                                dataType: "json",
                                success: function (res) {
                                    data.pageNum += 1;
                                    var lists = res;
                                    //封装返回数据,这里仅演示了修改属性名
                                    var returnData = {};
                                    returnData.draw = data.draw;//这里直接自行返回了draw计数器,应该由后台返回
                                    returnData.recordsTotal = lists.pages;
                                    returnData.recordsFiltered = lists.total;//后台不实现过滤功能,每次查询均视作全部结果
                                    returnData.data = lists.data;
                                    //关闭遮罩
                                    //$wrapper.spinModal(false);
                                    //调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染
                                    //此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕
                                    if (searchParams) {
                                        $.extend(searchParams, searchParams);
                                    }
                                    callback(returnData);
                                },
                                error: function (
                                    XMLHttpRequest,
                                    textStatus,
                                    errorThrown) {
                                    Toast('查询失败', 'warning', 'danger');
                                }
                            });
                        },
                        //设置数据
                        columns: [
                            { data: "id", defaltContent: 0 },
                            { data: "name", defaultContent: "空" },
                            { data: "sex", defaultContent: "未知性别" },
                            { data: "nickName", defaultContent: "空" },
                            { data: "createTime", defaultContent: "未知" },
                            { data: "companyCode", defaultContent: "空" }
                        ],
                        columnDefs: [
                            // 将companyCode列变为红色
                            {
                                "targets": [5], // 目标列位置,下标从0开始
                                "data": "salary", // 数据列名
                                "render": function (data, type, full) { // 返回自定义内容
                                    return "<span style='color:blue;'>" + data + "</span>";
                                }
                            },
                            // 增加一列,包括删除和修改,同时将我们需要传递的数据传递到链接中
                            {
                                "targets": [6], // 目标列位置,下标从0开始
                                "data": "name", // 数据列名
                                "render": function (data, type, full) { // 返回自定义内容
                                    console.log(data);
                                    return "<a href='/User/UserInfo?id=" + full.id + "'>预览</a>&nbsp;<a href='/User/Delete?id=" + full.id + "'>删除</a>";
                                }
                            }
                        ]
                    });
  • 相关阅读:
    python操作mysql封装成类
    es 数据 导出 到 MySQL
    Elasticsearch的数据导出和导入操作(elasticdump工具),以及删除指定type的数据(delete-by-query插件)
    解决VM虚拟机中的ubuntu不能全屏的问题
    pandas操作,感觉不错,复制过来的
    BTree和B+Tree详解
    ant安装配置
    jmeter默认生成测试报告
    学习网站
    selenium多窗口切换(windows)
  • 原文地址:https://www.cnblogs.com/jerque/p/15316530.html
Copyright © 2011-2022 走看看