Pergunta

Eu estou escutando em um SPWeb particular usando um SPWebEventReceiver que é sucesso disparando no WebMoved evento. Quando a web é movido para atualizar uma lista com a nova localização / título.

O que eu gostaria de ser capaz de fazer é ouvir quando a Web é renomeado . Eu faço isso, anexando um ouvinte item e à espera de um evento ItemUpdated? Se assim for eu gostaria de receber um pequeno trecho de código! Obrigado!

Foi útil?

Solução

Parece que este é um bug com o SharePoint OM. O receptor de eventos é claramente suposto fogo quando o nome de um web é alterado, mas não. ele só é acionado quando o URL da web é alterado.

Outras dicas

Steve, Tanto quanto eu posso ver, SPWebEventReceiver expõe apenas os seguintes eventos em um SPWeb ( http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebeventreceiver_members.aspx )

  • SiteDeleted
  • SiteDeleting
  • WebDeleted
  • WedDeleting
  • WebMoved
  • WebMoving

ItemAdded é definida em SPItemEventReceiver que é aplicável a SPListItem objetos.

A propriedade Título de um SPWeb é armazenado em um recipiente de propriedades ( http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.properties.aspx ).

Não parece como você pode tocar em eventos quando .Update () é chamado no saco da propriedade, por exemplo, quando Título é atualizado.

  1. Eu diria que uma renomeação do nome da Web deve acionar WebMoved.
  2. Site título renomeação aciona nenhuma ação.

Pergunta: Que mudanças você quer tot torneira? Porque qualquer metadados, por exemplo, poderiam ser armazenados em listas dentro, que suporta muitos eventos.

Eu não acredito que é um erro, eu acredito que é simplesmente uma má interpretação da documentação. Como você disse, a documentação indica que o WebMoving e WebMoved eventos são acionados por URL do site que está sendo modificado ou de ser renomeado:

MSDN Doc : "Synchronous antes evento que ocorre antes de um site existente foi renomeado ou movido para um objeto pai diferente."

No entanto, o que fica alterado na interface do usuário não é o "nome" do site, mas o título do site. O objeto SPWeb tem uma propriedade "Name", que é acessível através do modelo de objeto e atualização que Nome da propriedade e chamando SPWeb.Update () faz, de facto, disparar o evento WebMoved. O problema é que esta propriedade não é exposta através da página de configurações baseadas em web para o site, apenas o campo "Title" é exposta, e essa mudança de campo não aciona o evento. Enquanto isso parece um contra-senso bit e até enganosa, se você ler a documentação, literalmente, ele está se comportando exatamente como documentado.

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