我正在尋找一種以編程方式獲取門戶網站目錄中定義的類別的方法。據我可以看到類別被表示爲具有多個值的「選擇」類型的字段,用戶可以選擇表單。SharePoint:以編程方式獲取網站目錄的類別
我的問題是,我怎麼能區分正常字段,如「標題」或「作者」類別字段。其實我不會硬編碼類別名稱,但要動態加載它們。我認爲必須有一些標準,因爲站點目錄頁上的標準Web部件也會動態加載類別。
不幸的是我找不到關於這個問題的很多信息。
Bye Flo
我正在尋找一種以編程方式獲取門戶網站目錄中定義的類別的方法。據我可以看到類別被表示爲具有多個值的「選擇」類型的字段,用戶可以選擇表單。SharePoint:以編程方式獲取網站目錄的類別
我的問題是,我怎麼能區分正常字段,如「標題」或「作者」類別字段。其實我不會硬編碼類別名稱,但要動態加載它們。我認爲必須有一些標準,因爲站點目錄頁上的標準Web部件也會動態加載類別。
不幸的是我找不到關於這個問題的很多信息。
Bye Flo
好的,我明白了,我表達自己並不清楚。我知道如何獲取字段模式表單字段。但是我認爲,在你發佈信息之後,我自己也會回答我的問題。
我想知道的事情是,我可以假設在網站目錄的「網站」列表中的「選擇」類型的每個字段都代表一個網站可以分配給的類別? 因此,每個類別字段必須是「選擇」類型?
要獲得所有可用的類別,我必須遍歷列表的字段並根據類型「選擇」來查找字段,對吧?
UPDATE
同時我想我找到了答案,我的問題。如果它是「類別」視圖的一部分,網站列表中的列將作爲網站目錄的類別處理。一般而言,類別欄不一定是「選擇」類型,儘管其他類型在這種情況下沒有意義。
獲取對SPWeb的參考。使用SharePoint Manager(並非絕對必要,但該應用程序很有用)以獲取所需字段的詳細信息。
此代碼可以從字段xmlSchema獲取列表。注意:註釋的xml是我自己的Category字段的SchemaXml的外觀。
public static ArrayList GetCategory(SPWeb web)
{
ArrayList result = new ArrayList();
/* <?xml version="1.0" encoding="utf-16"?>
<Field ID="{6DF9BD52-550E-4a30-BC31-A4366832A87D}" Type="Choice" Group="_Hidden" Name="Category" DisplayName="Category" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Category">
<CHOICES>
<CHOICE>(1) Category1</CHOICE>
<CHOICE>(2) Category2</CHOICE>
<CHOICE>(3) Category3</CHOICE>
</CHOICES>
<Default>(2) Category2</Default>
</Field>*/
try
{
SPField catField = web.Fields[new Guid("6DF9BD52-550E-4a30-BC31-A4366832A87D")];
XmlDocument Doc = new XmlDocument();
Doc.LoadXml(catField.SchemaXml);
XmlNodeList Choices = Doc.SelectNodes("Field/CHOICES/CHOICE");
foreach (XmlNode Choice in Choices)
{
result.Add(Choice.InnerText);
}
}
catch (Exception ex)
{
result.Add("Failed: " + ex.Message);
}
return result;
}
啊,我得到你。我認爲這是唯一的途徑,因爲他們沒有儲存在其他地方。 – Nat 2009-02-16 19:54:48