Tabulator JS 中的级联下拉列

如何解决Tabulator JS 中的级联下拉列

我是 Tabulator JS 库的新手,我偶然发现了一个问题。我有 2 列,我试图找到一种方法来在每一行中实现级联下拉列表。第二列值选项取决于第一列值选择。有什么简单的方法可以做到?

预期结果:

  1. 用户在第一列中选​​择颜色,然后他应该在该行的第二列下拉列表中看到蓝色和黄色
  2. 用户在第一列中选​​择样式,然后他应该在该行的第二列下拉列表中看到S1 & S2
<!DOCTYPE html>
<html>
<head>
    <Meta charset="utf-8" />
    <title></title>

    <script>
        $(function () {
            var tabledata = [{ Need: "1",Surface:"" }];
            var NeedOptionSet = {};
            NeedOptionSet["1"] = "Color";
            NeedOptionSet["2"] = "Style";
            var SurfaceOptionSet_Color = {};
            SurfaceOptionSet_Color["1"] = "Blue";
            SurfaceOptionSet_Color["2"] = "Yellow";
            var SurfaceOptionSet_Style = {};
            SurfaceOptionSet_Style["1"] = "Bold";
            SurfaceOptionSet_Style["2"] = "Underline";
            var table = new Tabulator("#example-table",{
                height: 400,// set height of table (in CSS or here),this enables the Virtual DOM and improves render speed dramatically (can be any valid css height value)
                data: tabledata,//assign data to table
                layout: "fitColumns",//fit columns to width of table (optional)
                pagination: "local",paginationSize: 15,paginationSizeSelector: [15,25,35],addRowPos: "top",columns: [ //Define Table Columns
                    {
                        title: "Need",field: "Need",editor: "autocomplete",editorParams: {
                            showListOnEmpty: true,freetext: true,values: NeedOptionSet
                        },formatter: 'lookup',formatterParams: NeedOptionSet

                    },{
                        title: "Surface",field: "Surface",values: SurfaceOptionSet_Color
                        },formatterParams: SurfaceOptionSet_Color
                    }
                ]
            });

        });


    </script>

</head>
<body>
    
    <div id="example-table"></div>

</body>
</html>

解决方法

Tabulator 有一个内置的上下文菜单系统,用于显示级联菜单。

如果您希望在每一行都有它们,那么您应该使用 rowContextMenu 选项。

var table = new Tabulator("#example-table",{
    rowContextMenu:[
        {
            label:"Delete Row",action:function(e,row){
                row.delete();
            }
        },{
            label:"Sub Menu" //sub menu
            menu:[
                {
                    label:"Do Something"
                    action:function(e,column){
                        //do something
                    }
                },]
        },});

如果您希望每个菜单的值都发生变化,那么您可以将回调传递给每次加载菜单时调用的 rowContextMenu 属性,它应该返回菜单数组,如上所示:

var table = new Tabulator("#example-table",{
    rowContextMenu: function(component,e){
        //component - column/cell/row component that triggered the menu
        //e - click event object

        var menu = [];

        if(!component.getData().approved){
            menu.push({
                label:"Approve User",column){
                    component.update({"approved":true});
                }
            })
        }else{
            menu.push({
                label:"Unapprove User",column){
                    component.update({"approved":false});
                }
            })
        }

        return menu;
    }
});

可以在Context Menu Documentation

中找到完整的详细信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?