制表符列表项在滚动时消失; virtualDomBuffer问题?

时间:2018-11-19 20:10:13

标签: javascript tabulator

Tabulator v3.5.3
电子桌面应用程序(OSX和PC)

在300多个项目中,制表器表现出奇怪的行为;最严重的是物品正在消失。其他症状包括滚动“拇指”的大小和位置变得不稳定且不一致(例如,拇指位置未反映整个列表中的滚动位置)。

我想知道我将virtualDomBuffer设置得太高还是太低。当它设置为300时,会发生此行为。一次只有13至15个项目会出现在屏幕上。我这样设置Tabulator实例的高度:height: "84vh"。制表符可以处理的有效CSS值吗?

我尝试将virtualDomBuffer设置为1000,但这也许是处理此问题的错误方法吗?

(我知道有一个新版本的Tabulator,但我需要支持和现有的应用程序,除非有必要,否则我不想引入重大更改。

enter image description here---- enter image description here


Tabulator实例初始化

  eventList = $("#event-list");
        eventList.tabulator({
            height: "84vh",
            virtualDomBuffer: 300,
            layout: "fitColumns",
            resizableColumns: false,
            selectable: 1,
            responsiveLayout: "hide",
            placeholder: "No Events",
            columns: [
                {
                    title: "Events",
                    field: "startDate",
                    formatter: eventListRowFormatter,
                    variableHeight: true,
                    headerSort: false
                },
                { formatter: deleteIcon, width: 5, align: "center", cellClick: deleteFromEventList }
            ],
            rowClick: function (e, row) {
                // prevent deselecting clicked row
                var selectedRows = eventList.tabulator("getSelectedRows");
                if (selectedRows.length == 0) {
                    eventList.tabulator("selectRow", row);
                } else if (isEventDirty == false) {
                    lastEventSelected = row;
                    setActiveEvent(row.row.data)
                } else {
                    eventList.tabulator("deselectRow");
                    eventList.tabulator("selectRow", lastEventSelected);
                }
            },
            rowDeselected: function (row) {
                if (isEventDirty == true) {
                    lastEventSelected = row;
                }
            },
            ajaxLoader: false
        });

列格式化程序

function eventListRowFormatter(cell) {
    var data = cell.cell.row.data

    if (data.eventTitle == "") {
        return " - " + "<br>" + "<small>" + data.startDate + "</small>"
    } else {

        return data.eventTitle + "<br>" + "<small>" + data.startDate + "</small>"
    }
}

1 个答案:

答案 0 :(得分:-1)

3.5版中存在一些渲染故障,我建议更新至4.1版