SharePoint: программно получить категории каталога сайта - PullRequest
2 голосов
/ 28 января 2009

Я ищу способ получить категории, определенные в каталоге сайта портала программно. Насколько я мог видеть, категории представлены в виде полей типа «выбор» с несколькими значениями, которые пользователь может выбрать форму.

Моя проблема в том, как я могу отличить поля категории от обычных полей, таких как "заголовок" или "автор". На самом деле я не хочу жестко кодировать имена категорий, но хочу загружать их динамически. Я думаю, что должны быть некоторые критерии, поскольку стандартная веб-часть на странице каталога сайта также динамически загружает категории.

К сожалению, я не смог найти много информации об этой проблеме.

Пока Фло

Ответы [ 2 ]

1 голос
/ 29 января 2009

Ладно, понятно, я неясно выразился. Я знаю, как получить поле формы поля схемы. Но я думаю, что после вашего поста я сам получил ответ на свой вопрос.

Что я хотел знать, так это то, что я мог предположить, что каждое поле типа «выбор» в списке «веб-сайтов» каталога сайта представляет категорию, которой может быть присвоен сайт? Таким образом, каждое поле категории должно иметь тип «выбор»?

Чтобы получить все доступные категории, я должен пройтись по полям списка и искать поля в зависимости от типа «выбор», верно?

UPDATE

Между тем, я думаю, что нашел ответ на свой вопрос. Столбец в списке веб-сайтов обрабатывается как категория каталога веб-сайта, если он является частью представления «категории». В общем случае столбцы категории не обязательно должны быть типа «выбор», хотя другие типы не имеют смысла в этом контексте.

1 голос
/ 29 января 2009

Получить ссылку на SPWeb. Используйте SharePoint Manager (не обязательно, но приложение полезно), чтобы получить подробную информацию о нужном поле.

Этот код может получить список из полей xmlSchema. Примечание: закомментированный xml - это то, как выглядит мой собственный SchemaXml поля Category.

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;
}
...