Pergunta

Podemos escrever um eventreceiver que é demitido quando qualquer lista é atualizada. O listtemplateid que temos de especificar para um eventreceiver torna a nossa specefic código para uma raça de listas. E se nós queremos ter o código executado em eventos em todas as listas de site?

Foi útil?

Solução

Eu tenho o mesmo exigência exata.

Talvez seja possível anexar receptor de eventos para ContentType System (todos os tipos de conteúdo herdar esse, com 0x id)

verificação I d se isso é possível através da criação de um recurso com uma FeatureReceiver e programaticamente adicionando-o ao Sistema tipo de conteúdo. Alguns detalhes aqui .

Meu caminho em encontrar uma solução

Allright, eu fiz alguns testes com aplicação de console.

  1. tentou adicionar EventReceiver para System (0x) . método chamado ContentType.Update (verdadeiro, falso) que atualiza todos os elementos filhos - nem ContentType sistema atualizado, nem da criança . Acontece que você não pode modificar essas ContentTypes com ReadOnly || atributo Sealed conjunto para TRUE
  2. tentou adicionar EventReceiver ao Item (0x01) ContentType. Como pode ser visto a partir daqui, tudo ContentTypes ainda herdar de que um (ver ContentType hierarquia ). Não pode ser personalizado implantado tipos de conteúdo que herdam de sistema, mas não aqueles feitos em GUI. Atualizando esse tipo de conteúdo verdadeiramente atualizados todos ContentTypes criança (todos os tipos de conteúdo, exceto aqueles ReadOnly ou Sealed)

Como anexar um EventReceiver global para todos os itens

Assim, uma solução que iria trabalhar ficaria assim:

  1. iterar todas as listas, conjunto Readonly ou Sealed para false se você quiser esses tipos de conteúdo com você EventReceivers.
  2. Adicione o seu EventReceiver a tipos de conteúdo existentes em listas (SPList.ContentTypes)
  3. Adicione EventReceiver para ContentType (SPWeb.ContentTypes) com ID 0x01 tão novas listas obter EventReceiver adicionado automaticamente. Recém-criado tipos de conteúdo também irá herdar EventReceivers. Além disso, todos subweb ContentTypes herdar EventReceivers.

Todas as três etapas poderia ser um aplicativo de console ou script PowerShell. Ou uma característica ampla do conjunto de sites com FeatureReceiver

O resultado

    PS C:\Documents and Settings\Administrator> $web.contentTypes |ft id, name, EventReceivers, readonly, sealed

Id                      Name                    EventReceivers                         ReadOnly                  Sealed
--                      ----                    --------------                         --------                  ------
0x                      Sistēma                 {}                                        False                    True
0x007F1DD730DB144C84... Darba kārtības vēsture  {}                                         True                    True
0x01                    Ieraksts                {, , , ...}                               False                   False
0x01003420C661289843... Darba kārtības ieraksts {, , , ...}                               False                   False
0x0101                  Dokuments               {, , , ...}                               False                   False
0x010100629D00608F81... Office datu savienoj... {}                                         True                   False
0x010100B4CBD48E029A... Universālais datu sa... {}                                         True                   False
0x010101                Veidlapa                {, , , ...}                               False                   False
0x010102                Attēls                  {, , , ...}                               False                   False
0x010104                Nezināms dokumenta tips {}                                         True                   False
0x010105                Lapu šablons            {, , , ...}                               False                   False
0x010107                Lietotāja darbplūsma... {, , , ...}                               False                   False
0x010108                Wiki lapa               {, , , ...}                               False                   False
0x010109                Pamatlapa               {, , , ...}                               False                   False
0x01010901              Web daļu lapa           {, , , ...}                               False                   False
0x01010A                Saistīt ar dokumentu    {, , , ...}                               False                   False
0x01010B                Dublinas pamata kolo... {, , , ...}                               False                   False
0x0102                  Notikums                {, , , ...}                               False                   False
0x0103                  Diskutējamais jautājums {, , , ...}                               False                   False
0x0104                  Paziņojums              {, , , ...}                               False                   False
0x0105                  Saite                   {, , , ...}                               False                   False
0x0106                  Kontaktpersona          {, , , ...}                               False                   False
0x0107                  Ziņojums                {, , , ...}                               False                   False
0x0108                  Uzdevums                {, , , ...}                               False                   False
0x0108007122AD6D76CD... Darba kārtības uzdevums {, , , ...}                               False                   False
0x010801                Darbplūsmas uzdevums    {, , , ...}                               False                   False
0x010802                Administratīvs uzdevums {, , , ...}                               False                   False
0x0109                  Darbplūsmas vēsture     {, , , ...}                               False                   False
0x010A                  Person                  {, , , ...}                               False                   False
0x010B                  SharePointGroup         {, , , ...}                               False                   False
0x010C                  DomainGroup             {, , , ...}                               False                   False
0x0110                  Ziņa                    {, , , ...}                               False                   False
0x0111                  Komentārs               {, , , ...}                               False                   False
0x0116                  Tālo Austrumu līgums    {, , , ...}                               False                   False
0x0120                  Mape                    {}                                        False                    True
0x012001                RootOfList              {}                                        False                    True
0x012002                Diskusija               {, , , ...}                               False                   False

Desculpe, o meu WSS é localizada, mas {,, ...} significa que eu adicionei vários EventReceivers a tipos de conteúdo. Como você pode ver aqueles com Readonly ou Falso atributo Sealed estão intocados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top