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:
1 |
Install-Package AjaxControlToolkit |
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:
1 2 3 |
<%@ Register Assembly="AjaxControlToolkit, Version=3.0.30930.28736, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %> |
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:
1 2 |
<ajaxToolkit:ToolkitScriptManager id="ScriptManager" runat="server" EnablePageMethods="false" EnablePartialRendering="true" EnableScriptGlobalization="false" EnableScriptLocalization="true"/> |
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.
Na parte debaixo da tela que irá abrir, clique em Advanced.
Na tela seguinte, clique em Add -> Add Existing Assembly. Você verá uma tela igual a esta
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.
1 2 3 4 5 6 |
AjaxControlToolkit AjaxControlToolkit.Design AjaxControlToolkit.HTMLEditor AjaxControlToolkit.HTMLEditor.Popups AjaxControlToolkit.HTMLEditor.ToolbarButtons AjaxControlToolkit.MaskedEditValidator |
Pronto, seu pacote de implantação esta feito e seu problema resolvido.