Como usar a AjaxControlToolkit com o Sharepoint 2010

O cenário

Se você, assim como eu, já desenvolve em asp.net e está se aventurando com Sharepoint, provavelmente irá querer usar as funcionalidades da  AjaxControlToolkit em suas webparts. E se você, assim como eu, tem prazos apertados em seus projetos, você irá abrir o console do Nuget, digitar:

Pronto, tudo instalado, configurado e funcionando. Pelo menos até você compilar ou tentar implantar sua webpart!

O problema

Com este método a ultima versão a AjaxControlToolkit será adicionada ao seu projeto, e ai é que está o problema, a ultima versão da AjaxControlToolkit, não funciona com o Sharepoint 2010.

Provavelmente os erros que você encontrará são estes:

  • AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.
  • Sys.registerComponent is not a function

 

A solução

Existe uma outra versão mais antiga que, até onde eu sei, é a unica que funciona bem com o Sharepoint 2010, ela foi disponibilizada no release 30930 e pode ser baixada no link abaixo:

Link para a versão correta da AjaxControlToolkit para o Sharepoint 2010

Adicione a DLL ao seu projeto e referencie ela no ascx da webpart que deseja desta forma:

Abra sua MasterPage no Sharepoint Designer, antes faça um backup dela, o arquivo deve estar em “_catalogs/masterpage” e provavelmente será a v4.master. Referencie a Ajaxtoolkit na sua Master (da mesma forma que foi mostrado no snippet acima) e altere a declaração do ScriptManager da sua MasterPage para utilizar o ToolkitScriptManager da AjaxControlToolkit, desta forma:

Quase pronto, você já pode desenvolver utilizando as funcionalidades da AjaxControlToolkit em seu projeto, mas você deve se preocupar com o processo de implantação do seu pacote de webparts, afinal, a AjaxControlToolkit é uma DLL de terceiros que foi adicionado ao seu projeto.

 

Implantando a Solução

Este processo faz com que a AjaxControlToolkit seja incorporada ao seu pacote de implantação e registra os namespaces desta dll como seguros para o Sharepoint. No Visual Studio, dê dois cliques para abrir o seu pacote de implantação.

Print1

Na parte debaixo da tela que irá abrir, clique em Advanced.

Print2

Na tela seguinte, clique em Add -> Add Existing Assembly. Você verá uma tela igual a esta

Print3

Nesta tela, localize a AjaxControlToolkit e na lista SafeControls cadastre os namespaces conforme mostrado na imagem acima.

Vou deixar o código aqui pra você copiar, colar e não precisar ficar digitando.

Pronto, seu pacote de implantação esta feito e seu problema resolvido.