【问题标题】:Freeze column headers in browser while scrolling滚动时冻结浏览器中的列标题
【发布时间】:2014-01-17 14:23:09
【问题描述】:

我试图在向下滚动时冻结报表中的所有列标题。我已经阅读了很多关于如何进入高级模式、选择标题并将 FixedData 设置为 True、KeepWithGroup 设置为 After、RepeatOnNewPage 设置为 True 的文章。这在预览报表时有效,但在浏览器中无效。我尝试过使用 IE 11、Chrome 和其他浏览器,但它们都没有在滚动时修复列标题。

我花了几个小时试图让它工作,并阅读了以下文章: Freeze column header while scrollingFreezing column headers while scrolling in SSRS,但他们都没有在浏览器中完成此操作。

我尝试从报告向导创建一个简单的表格报告并按照这些说明进行操作,但它仍然不起作用。这对于开始工作以使用 SSRS 非常关键。我正在使用 SSRS 2012。任何帮助将不胜感激。

【问题讨论】:

  • 报告是否呈现为 PDF、HTML 或其他格式?
  • 报告正在浏览器中呈现。它在报表查看器控件和报表管理器中都不起作用。
  • 好吧,from what I'm reading here,并非所有输出格式都支持冻结功能。这就是为什么我问它是如何在浏览器中呈现的。
  • 报表管理器、报表预览和报表查看器控件确实支持它,这是我在这里尝试做的。
  • 这一定与服务器上的报告服务实例有关,因为它在预览中工作。查看任何报告时,工具栏是可滚动的,这应该始终是固定的。配置一定有问题。我将尝试在报表服务器上完全重新安装 SSRS。

标签: reporting-services ssrs-tablix ssrs-2012


【解决方案1】:

在设置这些属性之前选择正确的“静态”成员至关重要。对于您的情况,我认为您希望在行组列表中使用静态成员。

如果有多个“静态”成员,请依次选择它们并记下选择框在 tablix 中移动到的位置 - 这有助于选择正确的成员 - 通常是最后一个。

我最喜欢的帖子来自 Robert B:

http://blogs.msdn.com/b/robertbruckner/archive/2008/10/13/repeat-header-and-visible-fixed-header-table.aspx

祝你好运 - 在 5 年和 3 个版本之后,这仍然是一个令人难以置信的混乱......

【讨论】:

  • 我一遍又一遍地遵循这些确切的说明,但标题行仍然没有保持固定。我在 BI Development Studio 和 Report Builder 中都创建了一个简单的报表,两者的结果相同。有其他人在 SSRS 2012 中使用它吗?工具栏是否也应该保持固定,因为它也没有?
  • 这听起来很奇怪。报告究竟是如何“在浏览器中呈现”的?
  • 我让它在报表管理器中工作,但不是报表查看器。请参阅上面我的最新评论。
【解决方案2】:

这是一个疯狂的想法,但您是否可以不使用报表查看器,而是将报表呈现为 HTML 并将其添加到具有 CSS 类的网页中,该类会将标题更改为 position:fixed;

【讨论】:

    【解决方案3】:

    在 ASP.NET Report Viewer 控件中似乎固定的标题根本不起作用。我有一个简单的 aspx 页面,上面有 ReportViewer 控件,在 IE 11 中对其进行测试。固定标题在预览和报告管理器中工作,但不是 ASP.NET 报告查看器控件。 因此,我决定使用内置的报表查看器来简单地显示我的报表。固定的列标题以这种方式工作。

    【讨论】:

    • 如果没有在浏览器中查看的修复程序,这仍然是一个问题吗?只是偶然发现了同样的问题,无法让报告在 Microsoft Edge 上运行。
    • 我相信这仍然是一个问题,虽然我还没有在 SSRS 2016 中尝试过。
    【解决方案4】:

    我只是花了几天时间调查这个确切的问题。在预览中工作,在部署时没有。我注意到我的固定柱几年前就停止工作了。

    我的突破是当我开始使用全新的 SSRS 2012 安装进行测试时,冻结的行和列运行良好。通过比较它和我的实时系统之间的差异,我发现问题在于对 ReportingServices.js 所做的更改以修复 Chrome 中显示的空白报告。

    强制 el.style.overflow = "visible" 而不是其默认的 "auto" 会破坏 IE 中的冻结。我们的 Web 开发人员更改了 if 语句,因此它不会通过检查非 IE 函数是否存在 (window.addEventListener) 来替换 IE。

    if (el  && window.addEventListener)
        el.style.overflow = "visible";
    

    所以添加到新的 ReportingServices.js 的完整代码如下

    function pageLoad() {
       el = document.getElementById("ctl32_ctl09"),
    
       //Fix Chrome invisible report
       if (el  && window.addEventListener)
          el.style.overflow = "visible";
    }
    if (window.addEventListener) {
       window.addEventListener('load', pageLoad, false);
    } else {
       window.attachEvent('onload', pageLoad);
    }
    

    C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportManager\js\ReportingServices.js

    【讨论】:

    • 您能告诉我您使用的是哪个版本的 SQL Server 2012 吗?如果它是 SP1 之前的版本,它可能与我当前的设置相匹配,我在 IE 11 和 10 中看到了类似的行为,但在任何其他 IE 版本或最新的 Chrome 中都没有。谢谢!
    【解决方案5】:

    我能够在 IE 9 中冻结列标题。IE 11 出现问题。 IE 11 也没有显示垂直和水平滚动条 解决方案(对我而言)是将 IE 11 置于兼容模式。

    使用兼容模式的说明。 1)右键单击窗口顶部,然后选择显示“菜单栏” 2)在菜单中点击工具 3) 点击“兼容性视图”,将当前网址添加到页面列表中以显示在兼容性视图中,该列表可以通过点击“兼容性视图设置”进行管理

    希望这会有所帮助。我在其他地方找不到此文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      相关资源
      最近更新 更多