KTDatatable自定义行内按钮


默认下载的html模板中KTDatatable的行内按钮是没有点击事件实例的。官网也没有介绍。
当然我研究出来了。

首先在你需要的点击事件上加上**data-record-id=”‘ + row.OrderID + ‘“ data-ambi-event=”delete”**具体如下

<a href="javascript:;" data-record-id="' + row.OrderID + '" data-ambi-event="delete" class="btn btn-sm btn-clean btn-icon" title="删除"></a>
datatable.on('click', '[data-record-id]', function() {
    //获取当前对象的record-id。获取什么内容。就写data-xxx。取值就是xxx。
    //Swal.fire($(this).data('record-id'));

    //选择当前是哪个按钮,通过ambi-event判断。
    switch($(this).data('ambi-event')) {
        case 'edit':
            Swal.fire('edit');
            break;
        case 'delete':
            Swal.fire('delete');
            break;
        default:
            Swal.fire('default');
    } 

});

通过监听hash对页面内容进行加载


"use strict";

// 页面主题
var Ambijs = function() {

    
    // basic demo
    var init = function() {
        //加载页面
        entryPage();
    };

    var hashchange = function() {
        //监听hash
        $(window).on("hashchange", function() {//兼容ie8+和手机端
            entryPage();    //重新加载页面
        });
        
    };

    var entryPage = function() {
        var hash = window.location.hash.split('#')[1];
        var s = KTLayoutHeaderMenu.getMenu();
        if(hash == null){
            hash = 'main.html'
        }
        // 设置当前页位活动页
        s.setActiveItem($('a[href="#'+hash+'"]').closest('.menu-item')[0]);
        // Swal.fire(hash);
        //异步请求加载页面
        $.ajax({
            type: "GET",
            cache: false,
            async:false,    //异步
            url: hash,
            dataType: "html",
            success: function (res) {
                $('#kt_content').html($(res));
            }
        });
    }

    return {
        // public functions
        init: function() {
            init();
            hashchange();
        }
    };
}();

jQuery(document).ready(function() {
    Ambijs.init();
});

KTDatatable的重新加载

有时我们需要根据某些条件更改table的加载。通过查看文档。可以使用setDataSourceParam

datatable.setDataSourceParam("deptId",ori.id);
datatable.load();

KTDatatable分页的使用。

有两种方式。

一、是更改KTDatatable的请求参数。

源码在:src\js\components\datatable\core.datatable.js

$(datatable.table).siblings('.' + pfx + 'datatable-pager').removeClass(pfx + 'datatable-paging-loaded');

var buildMeta = function() {
    datatable.dataSet = datatable.dataSet || [];
    Plugin.localDataUpdate();
    // local pagination meta
    var meta = Plugin.getDataSourceParam('pagination');
    if (meta.perpage === 0) {
        meta.perpage = options.data.pageSize || 10;
    }
    meta.total = datatable.dataSet.length;
    var start = Math.max(meta.perpage * (meta.page - 1), 0);
    var end = Math.min(start + meta.perpage, meta.total);
    datatable.dataSet = $(datatable.dataSet).slice(start, end);
    return meta;
};

通过源码可以看到使用getDataSourceParam来更新查询参数。我不建议这样的方法,自己多深的水还是懂一些的。

二、服务器端响应数据更改

参照官网的格式返回,一切ok。表格的分页。排序就全部搞定。

{
    "meta": {
        "page": 1,
        "pages": 35,
        "perpage": 10,
        "total": 350,
        "sort": "asc",
        "field": "ShipDate"
    },
    "data": [***]
}

一个好奇的人