Compartir a través de


Modificación de listas web de host de SharePoint en el momento de la creación

Al crear una nueva lista en la web host, puede usar un receptor de eventos remoto ListAdded para modificar esa lista. Por ejemplo, puede habilitar el control de versiones, agregar un tipo de contenido a la lista o realizar cualquier otro cambio implementado por el modelo de objetos de cliente (CSOM).

Cuando la lista se agrega a la web host, debe adjuntar mediante programación el receptor de eventos. El ejemplo Core.EventReceiversBasedModifications muestra cómo usar un complemento hospedado por el proveedor para hacerlo. Cuando se instala el complemento, se produce un evento AppInstalled y se usa este evento para adjuntar el evento ListAdded .

Antes de empezar

Para empezar, descargue el complemento de ejemplo Core.EventReceiversBasedModifications del proyecto Office 365 Developer Patterns and Practices en GitHub.

Nota:

El código de este artículo se proporciona tal cual, sin garantía de ningún tipo, expresa o implícita, incluidas las garantías implícitas de aptitud para un propósito particular, comerciabilidad o ausencia de infracción.

Adjuntar el evento ListAdded

Para implementar los controladores de eventos para el complemento, muestre las propiedades del proyecto de SharePoint y establezca Handle Add-in Installed y Handle Add-in Uninstalling enTrue.

En el ejemplo de código siguiente se muestra cómo se modifica el receptor de eventos AppInstalled para adjuntar el 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();
}

Personalización de las listas agregadas

Cuando se activa el controlador de eventos ListAdded , se ejecuta el código siguiente.

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);
         }
       }
    }
  }
}

Desinstalación del receptor de eventos

Cuando se desinstala el complemento, también se debe quitar el receptor de eventos. Para que esto funcione durante la depuración, vaya a la biblioteca Complementos en pruebas y use la opción de eliminación en el complemento. Esto desencadena el evento AppUninstalling con los permisos adecuados para quitar el controlador de eventos remotos creado.

Si simplemente cierra el explorador o desinstala el complemento del contenido del sitio, el receptor de eventos nunca se activa o el receptor de eventos AppUninstalling se ejecuta con permisos insuficientes para quitar el receptor de eventos ListAdded . Esto se debe a que los complementos se implementan de forma diferente cuando se cargan de forma lateral, lo que hace Visual Studio al presionar F5.

Nota:

Se recomienda probar este ejemplo en un sitio para desarrolladores limpio.

Vea también