2009-11-30 2 views
0

У меня есть библиотека, и я хочу запустить некоторый код, когда элемент добавлен, чтобы заполнить некоторые дополнительные столбцы. Есть ли способ, которым я могу запустить этот код автоматически. Куда бы я его добавил? Также было бы возможно иметь экран, чтобы иметь возможность редактировать параметры кода. Просто некоторые, указывающие на правильное уклонение, были бы замечательными.SharePoint, выполняющий метод, когда элемент добавлен в библиотеку

Будет ли это случай создания рабочего процесса?

ответ

3

Рабочие процессы - это не путь к этому. Вы должны создать приемник событий элемента. Причина, по которой я говорю это, состоит в том, что кажется, что вам нужно, чтобы какой-то код запускался только после добавления элемента. Поскольку вам не нужно поддерживать состояние, тогда рабочие процессы не являются надлежащим решением этой проблемы. Вот что вы делаете: создайте новый класс в Visual Studio и наследуйте его от SPItemEventReceiver. Переопределите метод ItemAdded() и поместите туда свою логику. Пример:

public class MyItemEventReceiver : SPItemEventReceiver 
{ 
    public override void ItemAdded(SPItemEventProperties properties) 
    { 
     base.ItemAdded(properties); 
     // do your stuff 
    } 
} 

Этот код будет вызываться после добавления элемента. Если вам нужно запустить код до добавления элемента, вы будете переопределять метод ItemAdding(). Образом моя компания разворачивает приемники событий немного отличается, но это «по книге» Метод с использованием Elements.xml:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <Receivers ListTemplateId="101"> 
    <Receiver> 
     <Name>My Event Receiver</Name> 
     <Type>ItemAdding</Type> 
     <SequenceNumber>1000</SequenceNumber> 
     <Assembly>AssemblyName, Version=1.0.0.0, culture=neutral, PublicKeyToken=[token]</Assembly> 
     <Class>Namespace.Class</Class> 
     <Data></Data> 
     <Filter></Filter> 
    </Receiver> 
    </Receivers> 
</Elements> 

Вы упомянули, имеющий экран для редактирования параметров кода. Похоже, вы граничаете с другой банкой червей, поэтому я не могу говорить прямо с этим. Однако, если вы хотите передать различные варианты, которые отличаются от развертывания до развертывания, просто добавьте теги в теги <Data> выше. Затем вы можете получить доступ к своим опциям из свойства properties.ReceiverData в своем коде. Также обратите внимание, что теги <Filter> ничего не делают - они не были реализованы командой WSS 3. Надеюсь это поможет.

0

Что вы можете сделать, это создать обработчик событий и разместить там свой код. Вы можете найти пример в списке видеороликов This.

Что дает EventHandler - это место, где вы можете подключить свой код и сделать свой материал. Вы также можете решить, когда будет выполняться ваш код (Sync или Async), который до того, как элемент будет добавлен или после. This - отличная статья, чтобы узнать о EventHandlers.

0

Оба, рабочие процессы или EventReceivers (обработчик событий) могут быть прикреплены к спискам или библиотекам и будут выполнять эту работу. Какой из них вы должны использовать, зависит от того, что вы пытаетесь архивировать.

Рабочие процессы немного сложнее, но более эффективны и в основном используются для обработки некоторых длительных процессов, которые связаны с взаимодействием пользователей. Состояние рабочего процесса контролируется и также сохраняется SharePoint. Таким образом, рабочий процесс может быть остановлен в определенном состоянии, ожидая действия пользователя. Когда пользователь выполнит свою работу, рабочий процесс продолжится.

В отличие от этого EventReceivers - это всего лишь фрагмент кода, который будет запущен до или после того, как в списке или библиотеке, к которой он присоединен, произошло или произошло определенное событие. Если срабатывает EventReceiver, пользователь не может взаимодействовать с ним. EventReceiver должен полагаться на данные, которые были доступны при запуске события.

Смежные вопросы