如何從URL cqwp中獲取文檔庫名稱。例如,如何從URL中獲取文檔庫名稱
http:///sites/site1/DocLib/Forms/AllItems.aspx
我知道有使用XSL
<xsl:param name="DocLibName">
select=substring(url) or whatever the code should be
</xsl:param>
如何從URL cqwp中獲取文檔庫名稱。例如,如何從URL中獲取文檔庫名稱
http:///sites/site1/DocLib/Forms/AllItems.aspx
我知道有使用XSL
<xsl:param name="DocLibName">
select=substring(url) or whatever the code should be
</xsl:param>
http://msdn.microsoft.com/en-us/library/dd583143(office.11).aspx
<xsl:variable name="DocLibName" select="substring-before(substring-after($PageUrl, '/Forms/'), '/')" />
<xsl:param name="PageUrl"/>
設置VIEWFLAG = 1(它應該在屬性風中OWS)
找到這一行和修改,如果你想過濾的WebPart列表
<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/>
使用標準substring(string, int, int)
功能不會讓你很遠,因爲我希望字符串函數的文檔庫名稱的長度是未知的。
但是,您可以一起使用兩種功能,substring-after(string, string)
和substring-before(string, string)
。只要您的網站名稱不是「表單」,您就可以使用substring-before([URL], "/Forms")
檢索部分字符串。其餘......如果您沒有立即訪問網站名稱,它仍然很麻煩,但即使刪除該選項,它仍然比網址長度中的複雜計算容易得多。您基本上必須不斷執行substring-after([string], "/")
,直到彈出最後一個斜槓。
下面的代碼會給您的文檔庫的名稱從您發佈的URL(或在文檔庫中的任何視圖)
String pattern = ".*/(?<listStaticName>.+)/[^\\.]+\\.aspx";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(DefaultViewUrl);
String listStaticName = matches[0].Groups["listStaticName"].ToString();
您可以使用this article描述的方法來調用.NET來自XSL的代碼
Hugo, 1.感謝您的幫助,但 a。這是xsd的代碼嗎?如果是的話,我在哪裏放置代碼? b。如果沒有,那麼你可以給我xsd代碼從URL中找出文檔庫名稱(獲取當前文檔的libray名稱,如果有其他方法,它不必從url中獲取它) – Langoria 2010-06-03 20:40:39
您可以從您的.NET xsl代碼。我用鏈接編輯了我的答案。爲什麼downvote btw? – 2010-06-04 13:25:20
感謝ccomet。我會試一試,我會發布最終的代碼。 謝謝/ Ria – Langoria 2010-06-03 18:35:48