c# - SharePoint:以编程方式获取站点目录的类别

标签 c# sharepoint moss

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

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

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

再见弗洛

最佳答案

获取对 SPWeb 的引用。使用 SharePoint Manager (不是绝对必要,但该应用程序很有用)以获取所需字段的详细信息。

此代码可以从字段 xmlSchema 中获取列表。注意:注释的 xml 是我自己的类别字段的 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;
}

关于c# - SharePoint:以编程方式获取站点目录的类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/487849/

相关文章:

c# - 无法使用 Json.net 序列化具有复杂键的字典

sharepoint - 创建定时器作业的问题

sharepoint - 如何在 SharePoint 中自定义 RSS 源

SharePoint - 具有文件夹结构的自定义文档库

c# - 关于 Nullable<T> 结构的显式运算符实现的困惑

c# - 有关 null 或空参数的 SortDescription 文档

c# - 如何在另一个应用程序中使用一个应用程序中使用的 Elasticsearch 索引

php - 什么合作。我需要软件吗?

sharepoint - 最有用的免费 MOSS 2007 实用程序/库?

asp.net - SharePoint 2013,自定义 IHttpModule NullReferenceException