2009-01-28 103 views
2

我正在尋找一種以編程方式獲取門戶網站目錄中定義的類別的方法。據我可以看到類別被表示爲具有多個值的「選擇」類型的字段,用戶可以選擇表單。SharePoint:以編程方式獲取網站目錄的類別

我的問題是,我怎麼能區分正常字段,如「標題」或「作者」類別字段。其實我不會硬編碼類別名稱,但要動態加載它們。我認爲必須有一些標準,因爲站點目錄頁上的標準Web部件也會動態加載類別。

不幸的是我找不到關於這個問題的很多信息。

Bye Flo

回答

1

好的,我明白了,我表達自己並不清楚。我知道如何獲取字段模式表單字段。但是我認爲,在你發佈信息之後,我自己也會回答我的問題。

我想知道的事情是,我可以假設在網站目錄的「網站」列表中的「選擇」類型的每個字段都代表一個網站可以分配給的類別? 因此,每個類別字段必須是「選擇」類型?

要獲得所有可用的類別,我必須遍歷列表的字段並根據類型「選擇」來查找字段,對吧?

UPDATE

同時我想我找到了答案,我的問題。如果它是「類別」視圖的一部分,網站列表中的列將作爲網站目錄的類別處理。一般而言,類別欄不一定是「選擇」類型,儘管其他類型在這種情況下沒有意義。

+0

啊,我得到你。我認爲這是唯一的途徑,因爲他們沒有儲存在其他地方。 – Nat 2009-02-16 19:54:48

1

獲取對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; 
} 
相關問題