【问题标题】:SharePoint: Get site directory's categories programmaticallySharePoint:以编程方式获取网站目录的类别
【发布时间】:2009-01-28 14:37:42
【问题描述】:

我正在寻找一种以编程方式获取在门户网站目录中定义的类别的方法。据我所见,类别表示为“选择”类型的字段,具有多个值,用户可以选择表单。

我的问题是,我如何将类别字段与“标题”或“作者”等普通字段区分开来。实际上,我不想对类别名称进行硬编码,而是想动态加载它们。我认为必须有一些标准,因为站点目录页面上的标准 Web 部件也会动态加载类别。

很遗憾,我找不到很多关于这个问题的信息。

再见了

【问题讨论】:

    标签: c# sharepoint moss sitedirectory


    【解决方案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;
    }
    

    【讨论】:

      【解决方案2】:

      好吧,我明白了,我表达的不是很清楚。我知道如何获取字段架构表单字段。但我想在你的帖子之后我自己得到了我的问题的答案。

      我想知道的是,我可以假设站点目录的“网站”列表中“选择”类型的每个字段都代表一个站点可以分配到的类别? 所以每个类别字段都必须是“选择”类型?

      要获取所有可用类别,我必须遍历列表的字段并根据“选择”类型查找字段,对吗?

      更新

      与此同时,我想我找到了问题的答案。如果网站列表中的列是“类别”视图的一部分,则将其作为网站目录的类别处理。一般来说,类别列不一定必须是“选择”类型,尽管其他类型在这种情况下没有意义。

      【讨论】:

      • 啊,我明白了。我认为这是唯一的方法,因为它们没有存储在其他任何地方。
      • SharePoint 中不存在“Choise”类型的字段,除非您自己创建了这些字段。这是“选择” ;-) 为什么所有这些 XML 解析的代码都乱七八糟?有一个很好的类叫做 SPFieldChoice。只需将 SPField 转换为 SPFieldChoice 并枚举 Choices 属性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多