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
  1. Some good Links.

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

  1. Add these two line

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

<xsl:param name="PageUrl"/>

  1. set VIEWFLAG=1 (it should be in the properties windows)

  2. Find this line and modify if you want Filter the webpart list

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

Change it to following

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

You can use this to display

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

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

于 2010-07-13T18:06:33.653 に答える
0

ドキュメント ライブラリ名の長さは不明であるため、標準substring(string, int, int)関数を使用してもあまり効果がありません。

ただし、連携して使用できる機能が 2 つありsubstring-after(string, string)ますsubstring-before(string, string)。サイト名が「フォーム」でない限り、 を使用して部分的な文字列を取得できますsubstring-before([URL], "/Forms")。残りの部分については...サイトの名前にすぐにアクセスできない場合はまだ面倒ですが、そのオプションを削除しても、URLの長さの複雑な計算よりもはるかに簡単です. 基本的にsubstring-after([string], "/")、最後のスラッシュが飛び出すまで継続的に実行する必要があります。

于 2010-06-03T17:31:50.300 に答える