gpt4 book ai didi

javascript - 制表符 - 将菜单按钮添加到列标题

转载 作者:行者123 更新时间:2023-11-30 14:17:35 27 4
gpt4 key购买 nike

我是 JavaScript 的新手,目前正在学习如何使用 Tabulator(除此问题外它工作得很好)。

我想为每个列标题添加一个菜单按钮,然后打开一个下拉菜单。从此菜单中,用户应该能够选择“Group By”,然后使用所选列对表格数据进行分组。

有问题的按钮是:

<div class="ui icon top left pointing dropdown button" id=dropdown>
<i class="bars icon"></i>
<div class="menu">
<div class="header">Options</div>
<div class="item">Test</div>
</div>
</div>

看起来像这样:

Semantic UI Dropdown Button

这是我当前的专栏数据:

var table = new Tabulator("#example-table",{ 
data:tabledata,
layout:"fitColumns",
locale:true,
movableColumns:true,
resizableColumns:false,
columns:[
{title:"Name", field:"name", headerFilter:"input"},
{title:"Age", field:"age", align:"right", sorter:"number", headerFilter:"number", /* bottomCalc:"sum" */},
{title:"Favorite Color", field:"col", headerFilter:"input"},
{title:"Date of Birth", field:"dob", sorter:"date", align:"center", headerFilter:"input", headerContext:function(e, column){
table.setGroupBy(column.getField());
e.preventDefault();
},
},
{title:"Nationality", field:"nationality", headerFilter:"input", headerContext:function(e, column){
table.setGroupBy(column.getField());
e.preventDefault();
},
},
],
langs:{
"de-de":{
"headerFilters":{
"default":"Spalte filtern...",
}
}
},
});

最佳答案

更新

从 Tabulator 4.7 开始,现在内置了使用新的 headerMenu 选项向列添加标题菜单的功能:

//define row context menu
var headerMenu = [
{
label:"Hide Column",
action:function(e, column){
column.hide();
}
},
]

//add header menu in column definition
var table = new Tabulator("#example-table", {
columns:[
{title:"Name", field:"name", width:200, headerMenu:headerMenu}, //add menu to this column header
]
});

有关可用功能的完整详细信息,请查看 Menu Documentation

原始答案

你应该使用 titleFormatter 来做到这一点,试图从表格外部操作制表符内部的元素是非常危险的,因为制表符使用虚拟 DOM 元素可以被替换恕不另行通知,导致与插件的任何绑定(bind)随之丢失。

在同一页面上使用相同 ID 的多个元素也是不好的做法,上述解决方案就是这种情况。元素 ID 在页面上应该是唯一的

在这种情况下,您的标题格式化程序将如下所示:

var menuTitleFormatter = function(cell, formatterParams, onRendered){

//build dropdown
var dropdown = document.createElement("div");

dropdown.classList.add("dropdown");
dropdown.classList.add("ui");

dropdown.innerHTML = "<i class='bars icon'></i><div class='menu'><div class='header'>Options</div><div class='item' class='sort1'>Sort</div><div class='item' class='group1'>Group</div></div>";

//create dropdown
$(dropdown).dropdown();

$('.group1', $(dropdown)).click(function(){
//do something when the item is clicked
});


//set header title
var title = document.createElement("span");
title.innerHTML = cell.getValue();

//add menu to title
title.appendChild(dropdown);


return title;
}

您可以将它应用于其定义中的列

{title:"Name", field:"name", titleFormatter:menuTitleFormatter },

关于javascript - 制表符 - 将菜单按钮添加到列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53301995/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com