使用SharePoint列表作为数据源的Report Builder 3.0使用列表的相对URL

时间:2011-04-11 22:36:31

标签: sharepoint-2010 reportbuilder

我正在使用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或其他方法,以便每次基于此网站模板创建新网站时都不必在报告中手动更改连接字符串?

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

1 个答案:

答案 0 :(得分:2)

在与一些同事进行头脑风暴后,我们发现了这一点。关键是使用表达式作为连接字符串。使用我的原始示例,目标是得到这个:

http://mainsite/subsite1/

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

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

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

http://mainsite/subsite1/Reports

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

需要注意的事项:

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