【问题标题】:tabulator get column from custom column titleFormatter制表符从自定义列 titleFormatter 获取列
【发布时间】:2019-04-16 16:57:07
【问题描述】:

我有一个自定义函数,可以在我的制表器中隐藏/显示列。我单击的列应该隐藏,并显示其他几个列。我通过 onclick 在自定义单元格格式化程序中的对象上正常工作,但我想通过单击列标题来调用它。它可以工作,只是我似乎无法从列标题中获得我单击的列的句柄以隐藏该列。

我正在尝试获取列对象并将其传递给我的函数,以便在显示其他列时隐藏该列。我愿意接受其他方式来做到这一点。

这有效(单元格格式化程序)

var showForecastCell = function(cell, formatterParams, onRendered){
   ...
   span.onclick = function(){showForecast(cell.getColumn())};
   return span
}

这不起作用(列 titleFormatter)

var showForecastHeader = function(t,e,o,i,n){
   ...
   span.onclick = function(){showForecast(t.getColumn())};
   return span
}

有没有办法通过点击列标题来传递列对象?否则,如果在单击标题后有更简单的方法来隐藏该列,我愿意接受建议。我必须承认 javascript 不是我最擅长的语言,如果我忽略了一些基本的东西,请告诉我。

【问题讨论】:

    标签: tabulator


    【解决方案1】:

    您可以检查此JsFiddle 它隐藏了除您单击的列之外的所有其他列

    对于 Column 回调,您可以查看文档 herehere

      const hideAllButThis = function(e, column) {
      const showField = column._column.field;
      const columns = column._column.table.columnManager.columns;
      for (let i = 0; i < columns.length; i++) {
        if (columns[i].field !== showField) {
          table.hideColumn("" + columns[i].field + "")
        }
      }
    };
    

    【讨论】:

    • 嗯。我不打算让整个列标题 onclick 转到我的功能,只是我用自定义标题格式化程序放入列标题的按钮。我知道那会如何工作。我最终以文本形式传递了字段名称,并使用字段名称执行了 table.getColumn。这似乎是一个额外的步骤,但这是我能找到的唯一方法。我会考虑单击整个标题是否适合我的用户。
    • @JaredH 不明白,如果您仍有问题,请发布 JSfiddle,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多