如何移动到新添加的行并随着 Tabulator 中数据的增长使滚动消失
how to move to a newly added row and make the scroll disappear as the data grows in Tabulator
我有一个制表符。加载时,它将动态填充来自 ajax 调用的数据。
我还有一个自定义添加按钮 add-new-task
,可将新行添加到 table。
如何随着数据的增长tablediv展开div自动移动现在添加的行并使滚动条消失?
如果焦点转移到新添加行中 'Task Name' 列上的单元格编辑器,我也会很棒。
var workflowTasksTable = new Tabulator("#inputWorkflowTasks", {
layout:"fitColumns",
movableRows:true,
pagination: false,
columns:[
{rowHandle:true, formatter:"handle", headerSort:false, frozen:true, width:30, minWidth:30, download:false},
{title:"Task ID", field:"task_id", headerSort:false, editor:false, width:50, minWidth:50, resizable:false, visible:true, download:false},
{title:"Task Name", field:"task_name", headerSort:false, editor:"input"},
{title:"Task Abbreviation", field:"task_abbr", headerSort:false, editor:"input"},
{formatter: actionsBtnList, title:"Action", headerSort:false, download:false, resizable:false},
],
});
// Action to be taken whenever the user clicks "Add Task"
$('#add-new-task').on('click', async function(e) {
workflowTasksTable.addRow({})
.then((row) => {
workflowTasksTable.scrollToRow(row.getPosition(),"center");
});
});
谢谢
我解决了我的问题。如果有人正在寻找相同的东西,希望这会有所帮助。
将布局从 fitColumns
更改为 fitDataTable
可以调整新行的 table,因为 table 在没有任何滚动的情况下增长。
对于第一个 editable 单元格,rowAdded
很有帮助。
// Action to be triggered when a new row is added
workflowTasksTable.on("rowAdded", function(row){
setTimeout(function(){row.getCell("task_name").edit();},200);
});
如果没有超时,rowAdded 函数将不起作用,因为我想在呈现新行之前触发了回调,因此该行上不存在单元格组件。
使 table 随着数据增长调整高度的另一种解决方案是使用具有宽度规范和 div 样式的 fitData
布局:
var workflowTasksTable = new Tabulator("#inputWorkflowTasks", {
index:"task_name",
layout:"fitData",
movableRows:true,
pagination: false,
columns:[
{rowHandle:true, formatter:"handle", headerSort:false, frozen:true, width:30, minWidth:30, download:false},
{title:"Task ID", field:"task_id", headerSort:false, editor:false, resizable:false, visible:false, download:false, htmlOutput:false},
{title:"Task Name", field:"task_name", headerSort:false, editor:"input", validator:["required", "unique"], width:350, minWidth:100},
{title:"Task Abbreviation", field:"task_abbr", headerSort:false, editor:"input", validator:["required", "unique", "maxLength:3"], width:206, minWidth:50},
{formatter: actionsBtnList, title:"Action", headerSort:false, download:false, resizable:false, width:100},
],
validationMode:"manual"
});
<div id="inputWorkflowTasks" aria-describedby="workflowTasksHelp" style="min-height: 100px;overflow: hidden;"></div>
我有一个制表符。加载时,它将动态填充来自 ajax 调用的数据。
我还有一个自定义添加按钮 add-new-task
,可将新行添加到 table。
如何随着数据的增长tablediv展开div自动移动现在添加的行并使滚动条消失?
如果焦点转移到新添加行中 'Task Name' 列上的单元格编辑器,我也会很棒。
var workflowTasksTable = new Tabulator("#inputWorkflowTasks", {
layout:"fitColumns",
movableRows:true,
pagination: false,
columns:[
{rowHandle:true, formatter:"handle", headerSort:false, frozen:true, width:30, minWidth:30, download:false},
{title:"Task ID", field:"task_id", headerSort:false, editor:false, width:50, minWidth:50, resizable:false, visible:true, download:false},
{title:"Task Name", field:"task_name", headerSort:false, editor:"input"},
{title:"Task Abbreviation", field:"task_abbr", headerSort:false, editor:"input"},
{formatter: actionsBtnList, title:"Action", headerSort:false, download:false, resizable:false},
],
});
// Action to be taken whenever the user clicks "Add Task"
$('#add-new-task').on('click', async function(e) {
workflowTasksTable.addRow({})
.then((row) => {
workflowTasksTable.scrollToRow(row.getPosition(),"center");
});
});
谢谢
我解决了我的问题。如果有人正在寻找相同的东西,希望这会有所帮助。
将布局从 fitColumns
更改为 fitDataTable
可以调整新行的 table,因为 table 在没有任何滚动的情况下增长。
对于第一个 editable 单元格,rowAdded
很有帮助。
// Action to be triggered when a new row is added
workflowTasksTable.on("rowAdded", function(row){
setTimeout(function(){row.getCell("task_name").edit();},200);
});
如果没有超时,rowAdded 函数将不起作用,因为我想在呈现新行之前触发了回调,因此该行上不存在单元格组件。
使 table 随着数据增长调整高度的另一种解决方案是使用具有宽度规范和 div 样式的 fitData
布局:
var workflowTasksTable = new Tabulator("#inputWorkflowTasks", {
index:"task_name",
layout:"fitData",
movableRows:true,
pagination: false,
columns:[
{rowHandle:true, formatter:"handle", headerSort:false, frozen:true, width:30, minWidth:30, download:false},
{title:"Task ID", field:"task_id", headerSort:false, editor:false, resizable:false, visible:false, download:false, htmlOutput:false},
{title:"Task Name", field:"task_name", headerSort:false, editor:"input", validator:["required", "unique"], width:350, minWidth:100},
{title:"Task Abbreviation", field:"task_abbr", headerSort:false, editor:"input", validator:["required", "unique", "maxLength:3"], width:206, minWidth:50},
{formatter: actionsBtnList, title:"Action", headerSort:false, download:false, resizable:false, width:100},
],
validationMode:"manual"
});
<div id="inputWorkflowTasks" aria-describedby="workflowTasksHelp" style="min-height: 100px;overflow: hidden;"></div>