1

如何从 URL cqwp 获取文档库名称。例如,

http:///sites/site1/DocLib/Forms/AllItems.aspx

我知道 xsl 有子字符串函数

<xsl:param name="DocLibName"> 
  select=substring(url) or whatever the code should be
</xsl:param>
4

3 回答 3

1

以下代码将从您发布的 URL(或文档库中的任何视图)为您提供文档库的名称

String pattern = ".*/(?<listStaticName>.+)/[^\\.]+\\.aspx";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(DefaultViewUrl);
String listStaticName = matches[0].Groups["listStaticName"].ToString();

您可以使用本文介绍的方法从 XSL 调用 .NET 代码

于 2010-06-03T19:17:15.503 回答
0

使用标准substring(string, int, int)函数不会让你走得太远,因为我预计文档库名称的长度是未知的。

但是,您可以同时使用两个功能,substring-after(string, string)以及substring-before(string, string). 只要您的站点名称不是“表单”,您就可以使用substring-before([URL], "/Forms"). 其余的......如果您无法立即访问站点的名称,它仍然会很麻烦,但即使删除该选项,它仍然比 URL 长度的复杂计算要容易得多。你基本上必须不断地执行substring-after([string], "/"),直到你弹出最后一个斜线。

于 2010-06-03T17:31:50.300 回答
0
  1. 一些很好的链接。

http://msdn.microsoft.com/en-us/library/dd583143(office.11​​).aspx

  1. 添加这两行

<xsl:variable name="DocLibName" select="substring-before(substring-after($PageUrl, '/Forms/'), '/')" />

<xsl:param name="PageUrl"/>

  1. 设置 VIEWFLAG=1(它应该在属性窗口中)

  2. 找到此行并根据需要进行修改 Filter the webpart list

<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row" />

将其更改为以下

<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[(@CustomerNo=$DocLibName)]"/>

您可以使用它来显示

<xsl:value-of select="$DocLibName"> <br/>

<xsl:value-of select="$PageUrl"/><br/>

于 2010-07-13T18:06:33.653 回答