【问题标题】:Can Tabulator autocomplete be set up per cell? Not column?可以为每个单元格设置 Tabulator 自动完成功能吗?不是专栏?
【发布时间】:2022-01-06 14:30:33
【问题描述】:

我的制表器定义中需要有两个自动完成。用户将选择一名员工 - 首先是自动完成 - 然后当他选择合同时 - 第二列,自动完成必须链接到第一列中选​​择的值。

据我所知Tabulator 没有这样的功能。所以我在想,在单击“合同”单元格时,列定义 - 自动完成定义 - 将被更新。我无法让它工作,因为函数updateDefinitionbuggy。它创建新列而不是更新其定义。

工作jsFiddle

  table.on("cellEditing", function(cell){
        //e - the click event object
        //cell - cell component
       updateTitle(cell)
})
table.on("cellClick", function(e, cell){
  updateTitle(cell)
})

function updateTitle(cell){
  var field = cell.getField()
  if (field == "contract" || field =="id"){
    var column = cell.getColumn()
    var name = cell.getRow().getData().name
    console.log(field)   
    console.log(name)
    column.updateDefinition({title:"Updated Title"}) 
  }
}

我正在使用 MaterializeCSS 及其autocomplete,但我不知道如何使用它inside Tabulator。如果这真的是个好主意。

您能否提出最佳解决方案?

【问题讨论】:

    标签: javascript autocomplete tabulator


    【解决方案1】:

    在您的示例中,您仍然希望每列具有不同的自动完成功能,您只想使“合同”自动完成的值依赖于“名称”列的值。

    您可以将函数传递给editorParams 选项而不是对象,该函数将在每次打开编辑器时触发,并且应该为编辑器返回 params 对象。

    使用它,您可以创建一个函数,该函数将根据名称单元格的值更改编辑器参数的 values 属性。在本例中,我们假设这些值存储在一个简单的合同查找列表中,用于查找每个用户的姓名,但您可以随意查找

    {title:"contract", field:"contract", editor:"autocomplete", editorParams: function(cell){
         var contracts = {
            bob:["A", "B", "C"],
            jim:["D", "E", "F"],
         };
    
        return {
            values: contracts[cell.getData().name] //set values list based on name cell value
        }
    }},
    

    【讨论】:

      猜你喜欢
      • 2011-09-21
      • 2015-02-10
      • 2017-08-01
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2015-11-26
      相关资源
      最近更新 更多