domingo, 4 de dezembro de 2011

Event Receivers no SharePoint 2010 com Visual Studio 2010


Mostrarei neste post como manipular alguns eventos do SharePoint 2010 utilizando os Event Receivers. Em nosso exemplo, mostrarei a manipulação dos eventos de adição e remoção de itens de uma lista customizada no SharePoint.


Primeiro devemos criar nossa lista customizada que será usada para exemplificação.
Criei uma lista com o nome de “Funcionarios”.



Agora vamos criar outras colunas em nossa lista customizada.

A estrutura de campos da lista ficou como a imagem abaixo:


Troquei o nome da coluna “Title” que é criada automaticamente pelo SharePoint por “Nome”, que irá armazenar o nome do funcionário.

Também criei mais duas colunas, “Salario” do tipo número e “Data Fim do Contrato” do tipo data, ambas existem para que possamos criar uma regra para o cadastro de funcionários e também para remoção.

Bom, agora com o Visual Studio 2010 crie um projeto “Empty SharePoint Project”.

Com o projeto criado clique com o botão direito no projeto Add-> New Item. Na janela que aparecerá selecione “Event Receiver”, informe um nome para ele e adicione ao projeto.

Agora selecione as opções como na imagem abaixo:


-List Item Events: Com este item informamos que queremos manipular eventos de itens de lista.
-Custom List: Utilizamos este item pois a lista que utilizaremos não é uma lista nativa do site do SharePoint.
-An item is being added: Evento disparado ao iniciar o procedimento de adicionar um novo item, o procedimento ainda não foi concluído.
-An item is being deleted: Evento disparado ao iniciar o procedimento de remover um item, o procedimento ainda não foi concluído.

Agora insira o código abaixo nos métodos adicionados:


public override void ItemAdding(SPItemEventProperties properties)
{
    double Salario;


    if (properties.ListTitle == "Funcionarios")
    {
        if (properties.AfterProperties["Salario"] != null)
        {
            Salario = Convert.ToDouble(properties.AfterProperties["Salario"].ToString());

            if (Salario < 300)
                properties.Cancel = true;
        }
    }
}

/// <summary>
/// An item is being deleted.
/// </summary>

public override void ItemDeleting(SPItemEventProperties properties)
{

    DateTime DataFimContrato;

    if (properties.ListTitle == "Funcionarios")
    {
        if (properties.ListItem["Data Fim do Contrato"] != null)
        {

            DataFimContrato = Convert.ToDateTime(properties.ListItem["Data Fim do Contrato"].ToString());

            if (DateTime.Now > DataFimContrato)
                properties.Cancel = true;
        }
    }
}



O código é simples, a única diferença é quanto ao properties.Cancel onde definimos o cancelamento do procedimento.

A regra utilizada é simples: Para inserir um novo funcionário na lista, o salário deve ser maior que 300, caso contrário ele não será inserido.

Quanto à exclusão, somente poderá ser excluído o funcionário da lista caso a data atual seja maior que a data do fim do contrato, se a data do fim do contrato for maior que a data atual, o funcionário não será excluído da lista.

Agora basta realizar o deploy da solução e verificar a regra.

Nenhum comentário:

Postar um comentário