Modificar listas da Web do host do SharePoint na hora da criação
Ao criar uma nova lista na Web do host, você pode usar um receptor de eventos remoto ListAdded para modificar essa lista. Por exemplo, você pode habilitar a versão ou adicionar um tipo de conteúdo à lista ou fazer outras alterações implementadas pelo CSOM (modelo de objeto cliente).
Quando a lista é adicionada à Web do host, você precisa anexar programaticamente o receptor de eventos. O exemplo Core.EventReceiversBasedModifications mostra como usar um suplemento hospedado pelo provedor para fazer isso. Quando o suplemento é instalado, ocorre um evento AppInstalled e você usa esse evento para anexar o evento ListAdded .
Antes de começar
Para começar, baixe o suplemento de exemplo Core.EventReceiversBasedModifications do projeto Office 365 Padrões e Práticas do Desenvolvedor no GitHub.
Observação
The code in this article is provided as-is, without warranty of any kind, either express or implied, including any implied warranties of fitness for a particular purpose, merchantability, or non-infringement.
Anexar o evento ListAdded
Para implementar os manipuladores de eventos para o suplemento, exiba as propriedades do projeto do SharePoint e defina Manipular Suplemento instalado e manipular a desinstalação do suplemento comoTrue.
O exemplo de código a seguir mostra como o receptor de eventos AppInstalled é modificado para anexar o receptor de eventos ListAdded .
bool rerExists = false;
cc.Load(cc.Web.EventReceivers);
cc.ExecuteQuery();
foreach (var rer in cc.Web.EventReceivers)
{
if (rer.ReceiverName == RECEIVER_NAME)
{
rerExists = true;
}
}
if (!rerExists)
{
EventReceiverDefinitionCreationInformation receiver = new EventReceiverDefinitionCreationInformation();
receiver.EventType = EventReceiverType.ListAdded;
// Get WCF URL where this message was handled.
OperationContext op = OperationContext.Current;
Message msg = op.RequestContext.RequestMessage;
receiver.ReceiverUrl = msg.Headers.To.ToString();
receiver.ReceiverName = RECEIVER_NAME;
receiver.Synchronization = EventReceiverSynchronization.Synchronous;
cc.Web.EventReceivers.Add(receiver);
cc.ExecuteQuery();
}
Personalizar as listas adicionadas
Quando o manipulador de eventos ListAdded está sendo disparado, o código a seguir é executado.
private void HandleListAdded(SPRemoteEventProperties properties)
{
using (ClientContext cc = TokenHelper.CreateRemoteEventReceiverClientContext(properties))
{
if (cc != null)
{
try
{
if (properties.ListEventProperties.TemplateId == (int)ListTemplateType.DocumentLibrary)
{
//set versioning
cc.Web.GetListByTitle(properties.ListEventProperties.ListTitle).UpdateListVersioning(true, true);
}
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.Message);
}
}
}
}
}
Desinstalar o receptor de eventos
Quando o suplemento é desinstalado, o receptor de eventos também deve ser removido. Para fazer isso funcionar durante a depuração, acesse os Suplementos na biblioteca de testes e use a opção remover no suplemento. Isso dispara o evento AppUninstalling com as permissões adequadas para remover o manipulador de eventos remoto criado.
Se você fechar o navegador ou desinstalar o suplemento do conteúdo do site, o receptor de eventos nunca será acionado ou o receptor de eventos AppUninstalling será executado com permissões insuficientes para remover o receptor de eventos ListAdded . Isso ocorre porque os suplementos são implantados de forma diferente quando são carregados de lado, que é o que o Visual Studio faz quando você pressiona F5.
Observação
Recomendamos que você teste esse exemplo em um site de desenvolvedor limpo.