【问题标题】:Report Builder 3.0 with SharePoint List as data source using relative URL for list使用 SharePoint 列表作为数据源的 Report Builder 3.0,使用列表的相对 URL
【发布时间】:2011-04-13 07:08:35
【问题描述】:

我正在使用 Report Builder 3.0 创建用于 SharePoint 2010 的报表。SQL Server 2008 R2 是 SharePoint 集成模式下 Reporting Services 的后端。 Report Builder 3.0 的一项很酷的功能是使用 SharePoint 列表作为数据源,其设置非常简单 - 只需将 SharePoint 列表的 URL 作为连接字符串即可。

我最终想将此站点打包为站点模板,包括其中的报告,这意味着 URL 需要是相对的而不是绝对的。因此,例如,而不是这个:

http://mainsite/subsite1/lists/mylist

...我需要指定如下内容:

mylist

... 这样当我将其打包为站点模板并基于该模板创建新站点时,报告将使用新站点的列表,而不是指向原始站点的列表 URL。我已经尝试过“mylist”、“lists/mylist”等——除了指定 subsite1/lists/mylist 之外的所有方法——但到目前为止除了完整的 URL 之外没有任何效果。

是否可以使用相对 URL 或其他方法,以便每次基于此站点模板创建新站点时不必在报告中手动更改连接字符串?

编辑:我误解了数据源的连接字符串中需要输入的内容。连接字符串中的不是 list 的 URL,而是 site 的 URL。问题的概念仍然有效 - 需要动态设置指向 SharePoint 列表的数据源的连接字符串。

【问题讨论】:

    标签: sharepoint-2010 reportbuilder


    【解决方案1】:

    在与一些同事进行头脑风暴后,我们想通了。关键是使用连接字符串的表达式。使用我原来的例子,目标是得到这个:

    http://mainsite/subsite1/
    

    ... 在连接字符串中,但不对其进行硬编码——根据报告所在的位置使其动态化,以便可以将报告与站点的其余部分一起打包为站点模板。我最终得到的表达式是:

    =Replace(Globals!ReportFolder, "Reports", "")
    

    报告存在于名为“Reports”的库中,因此 Globals!ReportFolder 返回:

    http://mainsite/subsite1/Reports
    

    Replace()函数然后取出字符串的“Reports”部分,结果就是我想要的连接字符串。

    注意事项:

    • 在构建报告时不能测试表达式。我必须将站点 URL 硬编码到连接字符串中,以便设计人员在基于该数据源创建数据集时填充列表列表。否则它不会显示可用列表,您必须手动输入所有内容。在设计完报告后,我将连接字符串更改为表达式,并且在部署时它起作用了。
    • 测试时请确保刷新浏览器视图,而不是报告任务栏中的小刷新图标。似乎报告的内置刷新只获取新数据,但使用手头已有的 rdl 文件,而刷新浏览器会强制它获取 rdl 的最新副本以及最新数据。这可能是不言自明的,但它让我在几分钟内感到有些困惑,因为我的设计更改看起来没有任何区别,所以希望这能帮助其他人不要遇到同样的困惑。

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 1970-01-01
      • 2010-10-15
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      相关资源
      最近更新 更多