代码之家  ›  专栏  ›  技术社区  ›  Yash Nigam

DC JS:如何在单击时突出显示聚合数据表中的行,类似于行图表?

  •  2
  • Yash Nigam  · 技术社区  · 8 年前

    我喜欢dc.js库,并一直试图在dc.js中创建一个可单击的聚合表,但取得了部分成功。我想突出显示单击事件中的行(允许多选),类似于DC JS中的行图表或顺序条形图。像折线图一样,进行多个选择时,应突出显示多个表行。

    我无法选择已单击的行,相反,我的CSS将选择第一行,而不管单击哪一行。我试图使用“this”关键字来选择单击的当前行,但没有效果。

    这是JS小提琴: https://jsfiddle.net/yashnigam/kvt9xnbs/83/

    下面是我的单击事件代码,用于选择CSS:

           marketTable.on("renderlet", function(chart){
    
            chart.selectAll('tr.dc-table-row').on('click',function(d){
    
                if(filterKeys.includes(d.key)){
    
                 chart.select('tr.dc-table-row').datum(d.key).style('background-color','gray');
                }
    
            })
    
        });
    

    请共享一种方法,在单击时突出显示数据表的行,类似于在DCJS中的行图表。

    请帮忙!谢谢。

    2 回复  |  直到 8 年前
        1
  •  3
  •   Gordon    8 年前

    @哈桑有正确的想法。我只建议选择 tr 而不是 td s,而不是在单击时更改类(这在重绘之后将不复存在),而是在 pretransition 事件。

    所以:

    tr.dc-table-row.sel-rows {
         background-color: lightblue;
    }
    
    marketTable.on('pretransition', function (table) {
        table.selectAll('td.dc-table-column')
          .on('click', /* ... */)
        table.selectAll('tr.dc-table-row')
            .classed('sel-rows', d => filterKeys.indexOf(d.key) !== -1)
      });
    

    highlighted rows 我们根据行的键是否在数组中应用类。简单明了!

    Fork of your fiddle.

        2
  •  2
  •   Hassan Sadeghi    8 年前

    在onclick事件中,添加(切换)类似的类 .sel-rows 单击项目(而不是更改项目的背景色)。现在在您的CSS中添加:

    .sel-rows td{
         background-color: gray;
    }
    

    在某些浏览器中,表格行的背景色不起作用。