none
Кастомизация и установка EventRecerver? RRS feed

  • Вопрос

  • Разрабатываю EventRecerver. Дебагю его на тестовом портале, соответственно в Elements.xml прописал список к которому его применять (список кастомный). Собственно вопрос: как мне перенести EventRecerver на другой портал и задать там список к которому применятся? Я так понимаю если я возьму wsp то он будет искать на новом портале список на котором я его тестил? Если да то как тогда быть?

    28 июля 2011 г. 9:01

Ответы

  • Зачем же лезть в код. А если есть только wsp.

    Так вот. Для начала развёртываете решение на другом сервере. Далее заходите в папку фитч и находите нужное решение, после открываете и редактируете нужные поля Elements.xml Далее reset IIS


    Sergey A Belskiy - Microsoft® Most Valuable Professional Sharepoint Server, MCP, MCTS, MCPD || My blog || My Twitter || My Facebook || My Video
    • Предложено в качестве ответа Aviw_ 28 июля 2011 г. 13:28
    • Помечено в качестве ответа Aleksandr Shramko 28 июля 2011 г. 13:37
    28 июля 2011 г. 13:01
    Модератор
  • public class MessagesEventReceiver : SPItemEventReceiver

       {

        public override void ItemAdding(SPItemEventProperties properties)

        {

          base.ItemAdding(properties);

          try

          {

            //Проверка по типу содержимого

             if (properties.List.ContentTypes["Список сообщений"] == null)

               return;

     

            //Проверка по части названия списка

             if (!properties.ListTitle.Contains("ообщени"))

              return;

     

            //Проверка по наличию в списке указанных полей

             if (!properties.List.Fields.ContainsField("Sender") || !properties.List.Fields.ContainsField("Recipients"))

              return;

     

            EventFiringEnabled = true;

            

            //Ваш код

          }

          catch(Exception)

          {

          

          }

          finally

          {

            EventFiringEnabled = true;

          }

        }

      }

    Указываете более подходящее для вашего случая условие

    И подобный код для каждого события.


    • Помечено в качестве ответа Aleksandr Shramko 28 июля 2011 г. 12:59
    28 июля 2011 г. 11:53

Все ответы

  • EventReceiver привязывается ко всем спискам определённого типа.

    Отфильтровать все списки найдя нужный можно: по имени,  по части имени (например если имя списка не содержит определённого слова делаем return), по типу содержимого, по наличию в списке поля определённого типа или названия, и т.п.


    28 июля 2011 г. 9:57
  • А можно примерчик кода или ссылочку?
    28 июля 2011 г. 11:04
  • public class MessagesEventReceiver : SPItemEventReceiver

       {

        public override void ItemAdding(SPItemEventProperties properties)

        {

          base.ItemAdding(properties);

          try

          {

            //Проверка по типу содержимого

             if (properties.List.ContentTypes["Список сообщений"] == null)

               return;

     

            //Проверка по части названия списка

             if (!properties.ListTitle.Contains("ообщени"))

              return;

     

            //Проверка по наличию в списке указанных полей

             if (!properties.List.Fields.ContainsField("Sender") || !properties.List.Fields.ContainsField("Recipients"))

              return;

     

            EventFiringEnabled = true;

            

            //Ваш код

          }

          catch(Exception)

          {

          

          }

          finally

          {

            EventFiringEnabled = true;

          }

        }

      }

    Указываете более подходящее для вашего случая условие

    И подобный код для каждого события.


    • Помечено в качестве ответа Aleksandr Shramko 28 июля 2011 г. 12:59
    28 июля 2011 г. 11:53
  • Внимание! Cancel = true указывать не надо!

    А то у вас перестанут вызываться все события во всех списках к которому привязан Receiver.

    В моем коде события вызываются но просто ничего не делают.

    28 июля 2011 г. 11:58
  • Зачем же лезть в код. А если есть только wsp.

    Так вот. Для начала развёртываете решение на другом сервере. Далее заходите в папку фитч и находите нужное решение, после открываете и редактируете нужные поля Elements.xml Далее reset IIS


    Sergey A Belskiy - Microsoft® Most Valuable Professional Sharepoint Server, MCP, MCTS, MCPD || My blog || My Twitter || My Facebook || My Video
    • Предложено в качестве ответа Aviw_ 28 июля 2011 г. 13:28
    • Помечено в качестве ответа Aleksandr Shramko 28 июля 2011 г. 13:37
    28 июля 2011 г. 13:01
    Модератор
  • Ну человек же написал "Разрабатываю(!!) EventRecerver."

    Для тиражируемого решения не очень хорошо, говорить устанавливаемому, что ему нужно будет лазить по системе и что-то где-то менять, тем более если он не знаком с SharePoint.

    28 июля 2011 г. 13:28
  • Впринцыпе, оба метода рабочих так что тут уж от ситуации...

    28 июля 2011 г. 13:37