【问题标题】:Uncollapse Columns by RowClick按 RowClick 展开列
【发布时间】:2020-08-15 19:17:17
【问题描述】:

我已经在制表器中使用responsiveLayout:"collapse"responsiveLayoutCollapseStartOpen:false 设置了我的表格。

我的表格可以正确显示折叠列。 我将formatter:"responsiveCollapse" 添加为列,我正确地获得了带有 + 和 - 图标的列,并且可以手动展开/折叠列。

但为了在智能手机上使用,图标渲染得确实有点小。 我想根据回调rowClick添加展开/折叠。

我在 tabulator.js 中找到了 responsiveCollapsetoggleList,所以我想我知道需要发生什么。但是我完全在努力如何从rowClick 中返回它。

非常感谢您提前提示。

在制表符构造函数中我有:

columns:[ 
    { formatter:"responsiveCollapse", width:30, minWidth:30,      
    hozAlign:"center", resizable:false, headerSort:false, responsive:0 },           
    { title:"Ren.", field:"Race_Number", sorter:"number", 
    hozAlign:"center", minWidth:60, widthGrow:1, responsive:0 },
]

基本上我想实现一些功能作为格式化程序:rowClick中的“responsiveCollapse”:

rowClick:function(e, id, data, row){ 
    //trigger an alert message when the row is clicked
    //what to do here to achieve same as formatter:"responsiveCollapse"
},

【问题讨论】:

  • 能否提供一些代码
  • @JPRLCol 添加了一些代码

标签: javascript tabulator


【解决方案1】:

您可以从内置的 responsiveCollapse 格式化程序中复制一些代码来实现此目的。它将涉及访问一些私有变量,这有点调皮,但它会完成这项工作:

rowClick:function(e, id, data, row){ 
    var config = cell.getRow()._row.modules.responsiveLayout; //get the responsive config object for the row
    var collapseEl = config.element; //get the collapsible element for the row

    if(collapseEl){ //check if the row has any collapsed data

        config.open = !config.open; toggle the open state

        //toggle the collapse element
        if(config.open){
            el.classList.add("open");
            collapseEl.style.display = '';
        }else{
            el.classList.remove("open");
            collapseEl.style.display = 'none';
        }
    }
}

【讨论】:

  • 是的,我有同样的想法并找到了切换功能,但我无法让它工作。感谢您指出正确的方向。您的 sn-p 可以进行以下更正:var config = cell.getRow()._row.modules.responsiveLayout; 应该是 var config = id._row.modules.responsiveLayout;el.classList.add("open"); 应该是 collapseEl.classList.add("open"); 非常感谢!
【解决方案2】:

这很有帮助,记得注释掉“切换打开状态”并更新 el.classList.remove("打开"); 到 collapseEl.classList.remove("open");

【讨论】:

  • 请不要添加“谢谢”作为答案。它们实际上并没有提供问题的答案,并且可能被未来的访问者视为噪音。一旦您获得足够的声誉,您将获得投票您喜欢的答案的特权。这样,问题的未来访问者将看到对该答案的更高投票数,并且回答者也将获得声誉积分奖励。见Why is voting important.
  • 你会注意到我不只是说“谢谢”我还改进了答案。
  • 如果您想“改进答案”,请考虑通过点击帖子底部的“编辑”按钮来建议编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2017-09-02
  • 1970-01-01
  • 2017-03-20
  • 2022-11-12
  • 2019-09-16
  • 1970-01-01
相关资源
最近更新 更多