【问题标题】:Collapse Google Vis Table When Row Content Hidden隐藏行内容时折叠 Google Vis 表
【发布时间】:2018-03-24 19:58:30
【问题描述】:

我有一个电子表格,我在其中存储了 25 列中的大约 5000 行。有特定的类别标题行,然后是子类别行。我已将单元格格式化为带有类名的 HTML,以便我可以有条件地格式化它们,并且用户可以在我的 Web 应用程序中使用 jquery 修改它们。

这是电子表格的示例:

我在 Google Apps 脚本中使用 HTML 服务和 Google Visualization ChartWrapper Table 向用户显示此数据。我正在使用以下 jQuery 代码来取消隐藏隐藏的行:

   function toggleByClass(className) {
     $("."+className).toggle();
   }

我的问题是隐藏 div 的行仍然有一个高度,我希望它们完全折叠。此外,即使是我删除内容的行,也会在可视化中创建行

我能够使用 CSS 属性 empty-cells:hide; 隐藏行/单元格边框,但行高仍然存在。

我的问题:我将如何在内容隐藏时隐藏行但在它们未隐藏时显示它们?

【问题讨论】:

  • display: none?目前还不清楚您使用什么代码来隐藏内容。
  • 在将它们传递给网络应用程序之前,我正在创建谷歌表格中表格单元格内的元素。在google.visualization.ChartWrapper 中,我将选项设置为allowHtml: true。上面的屏幕截图,如果您查看单元格 A3,您可以看到第一个子类别中隐藏 div 的示例。

标签: jquery css google-apps-script google-visualization


【解决方案1】:

需要切换表格行,而不是内容,
试试这样...

$('.' + className).closest('tr').toggle();

当表格的'ready' 事件触发时,使用切换最初隐藏

google.visualization.events.addListener(table, 'ready', function () {
  toggleByClass('oddNumber');
  toggleByClass('evenNumber');
});

请参阅以下工作 sn-p...

google.charts.load('current', {
  packages: ['table']
}).then(function () {
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'A');
  data.addColumn('number', 'B');
  data.addRows([
    ['<div class="header">header 1</div>',  10000],
    ['<div class="oddNumber">subcategory 1</div>',  10000],
    ['<div class="oddNumber">subcategory 1</div>',  10000],
    ['<div class="oddNumber">subcategory 1</div>',  10000],
    ['<div class="header">header 2</div>',  10000],
    ['<div class="evenNumber">subcategory 2</div>',  10000],
    ['<div class="evenNumber">subcategory 2</div>',  10000],
    ['<div class="evenNumber">subcategory 2</div>',  10000],
  ]);

  var table = new google.visualization.Table($('#chart_div').get(0));

  google.visualization.events.addListener(table, 'ready', function () {
    toggleByClass('oddNumber');
    toggleByClass('evenNumber');
  });

  table.draw(data, {
    allowHtml: true
  });

  function toggleByClass(className) {
    $('.' + className).closest('tr').toggle();
  }

  $('.toggle-button').on('click', function () {
    toggleByClass(this.id);
  });
});
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css">

<button class="toggle-button ui-button ui-widget ui-corner-all" id="oddNumber">
  <span class="ui-icon ui-icon-seek-prev"></span><span>&nbsp;Toggle Odd</span>
</button>

<button class="toggle-button ui-button ui-widget ui-corner-all" id="evenNumber">
  <span class="ui-icon ui-icon-seek-next"></span><span>&nbsp;Toggle Even</span>
</button>

<div id="chart_div"></div>

【讨论】:

  • 感谢您的回复!我能够让子类别行不可见,这是一个巨大的帮助。我如何确保默认情况下所有子类别行都是隐藏的?最初在电子表格单元格中,我设置了display:none;,但需要一种方法来执行此操作,因为我将表格绘制到仅子类别行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2019-07-10
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
相关资源
最近更新 更多