Tabulator 交互式数据表格 javascript 库示例

​在本JavaScript 教程中,我们将看到如何使用tabulator js。在这个tabulator js 示例或tabulator js 教程中,我们将看到如何使用 tabulator js 立即创建交互式表格。​

什么是制表器js?

tabulator js是一个 javascript 库,我们可以使用它在几秒钟内创建交互式表格,而无需太多编码。它非常易于使用且功能齐全,是一个交互式表格 javascript 库。

我们可以从任何 HTML 表格、JavaScript 数组、AJAX 数据源或 JSON 格式的数据创建具有视觉吸引力的表格。

制表器js示例

现在,我们将看到一个tabulator js 示例,在这里我们将从JavaScript 数组创建一个表
在这里,我们要做的第一件事是创建一个 HTML 文件。​

准备好 HTML 文件后,我们要做的第一件事就是引用tabulator.min.csstabulator.min.js文件。

在这里,我使用 CDN 文件路径来引用 js 和 css 文件,如下所示:

<link href="https://unpkg.com/tabulator-tables@4.8.1/dist/css/tabulator.min.css" rel="stylesheet">

<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.8.1/dist/js/tabulator.min.js"></script>

接下来,我们可以创建如下所示的 JavaScript 数组:

var tabledata = [{
                playerid: 1,
                playername: "Virat Kohli",
                price: "17",
                team: "RCB",
                joiningdate: "01/01/2020"
            }, {
                playerid: 2,
                playername: "Rohit Sharma",
                price: "15",
                team: "MI",
                joiningdate: "02/01/2020"
            }, {
                playerid: 3,
                playername: "MS Dhoni",
                price: "15",
                team: "CSK",
                joiningdate: "03/01/2020"
            }, {
                playerid: 4,
                playername: "Shreyas Iyer",
                price: "7",
                team: "RCB",
                joiningdate: "04/01/2020"
            }, {
                playerid: 5,
                playername: "KL Rahul",
                price: "11",
                team: "KXIP",
                joiningdate: "05/01/2020"
            }, {
                playerid: 6,
                playername: "Dinesh Karthik",
                price: "7",
                team: "KKR",
                joiningdate: "06/01/2020"
            }, {
                playerid: 7,
                playername: "Steve Smith",
                price: "12",
                team: "RR",
                joiningdate: "07/01/2020"
            }, {
                playerid: 8,
                playername: "David Warner",
                price: "12",
                team: "SRH",
                joiningdate: "08/01/2020"
            }, {
                playerid: 9,
                playername: "Kane Williamson",
                price: "3",
                team: "SRH",
                joiningdate: "09/01/2020"
            }, {
                playerid: 10,
                playername: "Jofra Archer",
                price: "7",
                team: "RR",
                joiningdate: "10/01/2020"
            }, {
                playerid: 11,
                playername: "Andre Russell",
                price: "9",
                team: "KKR",
                joiningdate: "11/01/2020"
            }, {
                playerid: 12,
                playername: "Chris Gayle",
                price: "2",
                team: "KXIP",
                joiningdate: "12/01/2020"
            },

        ];

一旦数据源准备好,现在我们可以使用 tabulator js 代码将数据绑定到 html div 标签。所以在这里我创建了一个具有如下 id 的 div:

<div id="players"></div>

下面是如何使用上述数组数据创建交互式表的代码。

var table = new Tabulator("#players", {
            height: 220,
            data: tabledata,
            layout: "fitColumns",
            pagination: "local",
            paginationSize: 5,
            tooltips: true,
            columns: [{
                    title: "Player Name",
                    field: "playername",
                    sorter: "string",
                    width: 150,
                    headerFilter: "input"
                }, {
                    title: "Player Price",
                    field: "price",
                    sorter: "number",
                    hozAlign: "left",
                    formatter: "progress",
                },

                {
                    title: "Team",
                    field: "team",
                    sorter: "string",
                    hozAlign: "center",
                    editor: "select",
                    headerFilter: true,
                    headerFilterParams: {
                        "RCB": "RCB",
                        "MI": "MI",
                        "KKR": "KKR",
                    }
                }, {
                    title: "Joining Date",
                    field: "joiningdate",
                    sorter: "date",
                    hozAlign: "center"
                },
            ],
            rowClick: function(e, row) {
                alert("Row " + row.getData().playerid + " Clicked!!!!");
            },
        });

让我们了解以下几点:

  • new Tabulator(“#players”,{ : 这里#players 是表格将呈现的 HTML div id。
  • height: 220:这里可以定义表格的高度,如果加载更多记录,则会出现滚动条。
  • data: tabledata:这里我们需要传递数据,这里是JavaScript数据数组名。
  • 布局:“fitColumns”:表格布局将适合页面。
  • pagination: “local” 和 paginationSize: 5:我们需要实现分页的这些参数。要启用分页,我们需要将其设置为 local 和 paginationSize。
  • 工具提示: true:当您将鼠标悬停在表中的任何列时将其设置为 true 后,将显示数据。
columns: [{
                    title: "Player Name",
                    field: "playername",
                    sorter: "string",
                    width: 150,
                    headerFilter: "input"
                }

columns 参数非常重要。您可以从数据源添加要在表中显示的列。以下是它将采用的参数:

  • 标题:这将是表列显示名称
  • field : 来自数据源的数据源字段
  • sorter:如果您尝试对文本字段进行排序,那么我们必须提及string。同理,整数类型的字段写“ number ”,DateTime类型的字段写“ date ”。
  • headerFilter: “input”: 如果你想在标题下面有一个过滤器选项,你可以为字符串类型写输入。

同样,如果你想对下拉列表使用过滤器,我们必须像下面这样写:

headerFilter: true,
                    headerFilterParams: {
                        "RCB": "RCB",
                        "MI": "MI",
                        "KKR": "KKR",
                    }

如果要从表中获取选定的行值,可以使用如下所示:

row.getData().playerid:这里的 playerid 是列名。

rowClick: function(e, row) {
                alert("Row " + row.getData().playerid + " Clicked!!!!");
            },

完整的 HTML 和 JavaScript 代码如下所示。整个 .html 文件代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tabulator Example</title>
    <link href="https://unpkg.com/tabulator-tables@4.8.1/dist/css/tabulator.min.css" rel="stylesheet">
    <script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.8.1/dist/js/tabulator.min.js"></script>

</head>

<body>

    <div id="players"></div>
    <script type="text/javascript">
        var tabledata = [{
                playerid: 1,
                playername: "Virat Kohli",
                price: "17",
                team: "RCB",
                joiningdate: "01/01/2020"
            }, {
                playerid: 2,
                playername: "Rohit Sharma",
                price: "15",
                team: "MI",
                joiningdate: "02/01/2020"
            }, {
                playerid: 3,
                playername: "MS Dhoni",
                price: "15",
                team: "CSK",
                joiningdate: "03/01/2020"
            }, {
                playerid: 4,
                playername: "Shreyas Iyer",
                price: "7",
                team: "RCB",
                joiningdate: "04/01/2020"
            }, {
                playerid: 5,
                playername: "KL Rahul",
                price: "11",
                team: "KXIP",
                joiningdate: "05/01/2020"
            }, {
                playerid: 6,
                playername: "Dinesh Karthik",
                price: "7",
                team: "KKR",
                joiningdate: "06/01/2020"
            }, {
                playerid: 7,
                playername: "Steve Smith",
                price: "12",
                team: "RR",
                joiningdate: "07/01/2020"
            }, {
                playerid: 8,
                playername: "David Warner",
                price: "12",
                team: "SRH",
                joiningdate: "08/01/2020"
            }, {
                playerid: 9,
                playername: "Kane Williamson",
                price: "3",
                team: "SRH",
                joiningdate: "09/01/2020"
            }, {
                playerid: 10,
                playername: "Jofra Archer",
                price: "7",
                team: "RR",
                joiningdate: "10/01/2020"
            }, {
                playerid: 11,
                playername: "Andre Russell",
                price: "9",
                team: "KKR",
                joiningdate: "11/01/2020"
            }, {
                playerid: 12,
                playername: "Chris Gayle",
                price: "2",
                team: "KXIP",
                joiningdate: "12/01/2020"
            },

        ];

        var table = new Tabulator("#players", {
            height: 220,
            data: tabledata,
            layout: "fitColumns",
            pagination: "local",
            paginationSize: 5,
            tooltips: true,
            columns: [{
                    title: "Player Name",
                    field: "playername",
                    sorter: "string",
                    width: 150,
                    headerFilter: "input"
                }, {
                    title: "Player Price",
                    field: "price",
                    sorter: "number",
                    hozAlign: "left",
                    formatter: "progress",
                },

                {
                    title: "Team",
                    field: "team",
                    sorter: "string",
                    hozAlign: "center",
                    editor: "select",
                    headerFilter: true,
                    headerFilterParams: {
                        "RCB": "RCB",
                        "MI": "MI",
                        "KKR": "KKR",
                    }
                }, {
                    title: "Joining Date",
                    field: "joiningdate",
                    sorter: "date",
                    hozAlign: "center"
                },
            ],
            rowClick: function(e, row) {
                alert("Row " + row.getData().playerid + " Clicked!!!!");
            },
        });
    </script>
</body>

</html>

运行 HTML 文件后,您可以看到输出如下所示:

制表器js教程

自己常用的js和写的一个交互型可编辑表格: new BaseJs.EditTable({ // 表对象 table : BaseJs.$("tab"), // 从第几行第几列开始可编辑 start : [2, 1], // 到哪一行哪一列结束编辑 不写默认所有,写一个参数代表列,行不限 end : [], // 新增操作 addAction : { // (button)执行操作的按钮, button : BaseJs.$('add'), // callback:执行操作后的回调函数,能够加入一些自定义操作 callback : function(tr) { tr.onclick = function() { var trs = BaseJs.getByTagName("tr",BaseJs.$("tab")); for (var i = 0; i < trs.length; i++) { trs[i].style.background = '#FAFCFE'; } tr.style.background = '#B8CCF0'; } } }, // 保存新增或更新操作 saveOrUpdateAction : { button : BaseJs.$('save'), // 提交更新url,后台取参数data,为json字符串 url : 'saveOrUpdateActionUrl', //返回true执行保存操作 beforeCallback:function(data){ alert("提交给后台url:saveOrUpdateActionUrl?data="+BaseJs.encode(data)); return false; }, afterCallback : function(mo) { alert("提交修改后的数据:"+mo); //document.location.reload(); } }, // 删除操作 delAction : { button : BaseJs.$('delete'), // 删除url 可用函数返回动态url url : function() { return 'delActionUrl&mid=' + document.getElementById("mid").value; }, //返回true执行删除操作 beforeCallback:function(){ alert("提交给后台url:delActionUrl?sids="+document.getElementById("mid").value); return false; }, afterCallback : function() { document.location.reload(); } }, // id名(记录的id值需要保存在tr.id上) primaryKey : 'id', // 要全并的列数集合 [0]代表第一列要执行合并操作,[0,1]代表1,2列有合并操作 mergeColumn : [], // 列描述对象 ,包含一个数组,数组中每一个对象说明一个列编辑对象和相关处理 column : [ { name : 'year', // 选择型 editorType : 'select', // 加载select数据url,返回json数据,格式应为:[{display:'',value:''},{display:'',value:''}] dataUrl : 'WaterQualityAction?method=AjaxSelect&para=LEVEL', //可以动态返回 //dataUrl : function(me){ // return 'WaterQualityAction?method=AjaxSelect&para=LEVEL'; //}, //本地数据 有此选项时dataUrl无效 data:"[{display:'2005年',value:'2005'},{display:'2004年',value:'2004'},{display:'2003年',value:'2003'},{display:'2002年',value:'2002'},{display:'2001年',value:'2001'}]", // 新增默认值,不写使用默认 defaultValue : '2008年', // 检验输入数据正确性,返回true通过验证 validate : function(v, obj) { alert("现在检验输入数据合法性!"); return true; } }, { name : 'com', editorType : 'text', defaultValue : '请输入', validate : function(v, obj) { if (!/^[0-9]+$/.test(v)){alert("必须是数字");return false}; return true; } }, { name : 'cn', editorType : 'text', defaultValue : '请输入', validate : function(v, obj) { if (!/^[0-9]+$/.test(v)){alert("必须是数字");return false}; return true; } }, { name : 'date_month', // 日期型 editorType : 'date', // 格式化日期样式,默认yyyy-MM format : 'yyyy年MM月份', //自定义默认值 defaultValue : BaseJs.Utils.format .date(new Date(), 'yyyy年MM月份') }] });
自己常用的js和写的一个交互型可编辑表格: BaseJs的一点源码: /** * 自定义javascript常用基础 author zhang_jhai 创建时间 2010/04/10 最后修改时间 2010/05/03 * version 2.0 */ // Base基础类 BaseJs = function() { // 判断浏览器类型 userAgent = navigator.userAgent.toLowerCase(); check = function(r) { return r.test(userAgent); }; isOpera = check(/opera/); isIE = !isOpera && check(/msie/); isIE7 = isIE && check(/msie 7/); isIE8 = isIE && check(/msie 8/); isIE6 = isIE && !isIE7 && !isIE8; var base = { isIE : isIE, // 动态添加事件 addEvent : function(oTarget, sEventType, funName) { if (oTarget.addEventListener) { oTarget.addEventListener(sEventType.substring(2, sEventType.length), funName, false); } else if (oTarget.attachEvent) { oTarget.attachEvent(sEventType, funName); } else { oTarget[sEventType] = funName; } }, // 删除事件 removeEvent : function(oTarget, sEventType, funName) { if (oTarget.removeEventListener) { oTarget.removeEventListener(sEventType.substring(1, sEventType.length), funName, false); } else if (oTarget.detachEvent) { oTarget.detachEvent(sEventType, funName); } else { oTarget[sEventType] = null; } }, // 阻止事件冒泡行为 stopBubble : function(ev) { // 如果传入了事件参数,则说明不是ie浏览器 if (ev && ev.stopPropagation) { ev.stopPropagaton(); } else { window.event.cancelBubble = true; } }, // 阻止事件默认浏览器行为 stopDefault : function(ev) { // w3c标准 if (ev && ev.preventDefault) { ev.preventDefault(); } // ie window.event.returnValue = false; return false; }, ........................... ........................... 可编辑表格用法示例: var buttons = BaseJs.getByTagName("img"); for (var i=0;i -1){ add = buttons[i]; }else if(src.indexOf('del')>-1){ del = buttons[i]; }else if(src.indexOf('save')>-1){ save = buttons[i]; } } EidtTable = new BaseJs.EditTable({ /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值