SPListTemplate не найден через приемник событий в SharePoint 2007 - PullRequest
1 голос
/ 22 марта 2011

У меня есть собственный шаблон сайта, который активирует функцию с приемником событий, единственное, что делает приемник, это активирует некоторые другие функции, все в том же приемнике.

Первая функция, которую я активирую, - этоListTemplate называется «Аудит».В третьей активируемой функции я пытаюсь использовать этот шаблон через объектную модель, однако он не найден, поэтому он выдает исключение.

Я попытался обновить сайт с web.Update(), но этотоже не сработало.

Код не работает, когда он активирован через шаблон сайта, это означает, что если я активирую свою функцию с уже созданного сайта, он работает нормально.

Есть ли способ доступашаблон списка при создании сайта when?

Заранее спасибо

РЕДАКТИРОВАТЬ: Это основная функция

/// <summary>
    /// Evento disparado al activar la feature
    /// </summary>
    /// <param name="properties"></param>
    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        //Obteniendo el sitio (web) en donde fue activada la feature
        SPWeb web = (SPWeb)properties.Feature.Parent;

        //Guid a utilizar para instalar las features
        Guid g;

        //GUID de Feature de list template de auditorías
        g = new Guid("{3b91e461-e8c9-49dd-857a-671eb031017c}");
        if (web.Features[g] == null)
            web.Features.Add(g);

        //GUID de Feature Catalogos
        g = new Guid("{d102dd61-0aaf-4a18-8bcc-2260e78cc87c}");            
        if (web.Features[g] == null) 
            web.Features.Add(g);

        //GUID de Feature Content type de auditorías
        g = new Guid("{a5c3defb-bcbf-41e5-aefc-2617814d25d6}");
        if (web.Features[g] == null) 
        web.Features.Add(g);

        //GUID de Feature CheckList template
        g = new Guid("{63fa11ba-e8e2-414d-bb7e-a3cdbce11cfe}");
        if (web.Features[g] == null) 
        web.Features.Add(g);

        //GUID de Feature asocia eventos
        g = new Guid("{bbc32500-034d-4d9e-a048-558d62edfe53}");
        if (web.Features[g] == null)
            web.Features.Add(g);

        //GUID de Feature para crear preguntas
        g = new Guid("{ee66eb41-57a4-400a-9c50-8db0e6beeb80}");
        if (web.Features[g] == null) 
        web.Features.Add(g);

        //GUID de Feature para ECB
        g = new Guid("{9bbdb06c-4ea1-4328-8b3d-828ea2043d3e}");
        if (web.Features[g] == null) 
        web.Features.Add(g);

        //GUID de Feature para hallazgos
        g = new Guid("{acfdda27-58d5-4f7e-a6de-0a7fe190bc74}");
        if (web.Features[g] == null)
            web.Features.Add(g);

        //GUID de Feature para resultados
        g = new Guid("{a9a804dd-18a3-47a0-80bf-25e785a8cac8}");
        if (web.Features[g] == null)
            web.Features.Add(g);

    }

Первая функция - шаблон списка.Третья функция имеет приемник, в котором я ищу шаблон

//Obteniendo el template
        SPListTemplate ltAuditorias = sitio.ListTemplates["Auditoria"];

Однако я получаю исключение индекса вне диапазона, потому что он не найден.Как я уже сказал, это происходит только тогда, когда основная функция активируется через шаблон сайта в теге Feature.Если я создаю пустой сайт, а затем активирую основную функцию, все работает.

Спасибо

1 Ответ

0 голосов
/ 23 марта 2011

Ваш сайт, вероятно, не полностью подготовлен к моменту запуска вашего приемника функций. Это означает, что не все элементы сайта (например, шаблоны списков) доступны. В качестве обходного пути вы можете внедрить поставщика .

SPWebProvisioningProvider позволяет вам контролировать SPWeb (веб-сайт) или SPSite (семейство сайтов), которые вы инициализируете. Вместо того, чтобы просто использовать шаблон сайта и изменения, которые можно применить через шаблон сайта, вы можете добавить свой собственный код в решение.

из Тайна, которая является SPWebProvisioningProvider .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...