如何解决Tabulator JS 中的级联下拉列
我是 Tabulator JS 库的新手,我偶然发现了一个问题。我有 2 列,我试图找到一种方法来在每一行中实现级联下拉列表。第二列值选项取决于第一列值选择。有什么简单的方法可以做到?
预期结果:
<!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;
}
});
中找到完整的详细信息版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。