Introducción

En este post vamos a ver cómo podemos usar los controles de Telerik asp.net AJAX dentro de nuestros propios desarrollos de SharePoint 2010. Y como el propio título del post indica, veremos que eso mismo no es viable dentro de soluciones sandbox, así que no podremos ayudarnos de estos controles para nuestros desarrollo en Office 365.

Respecto a los controles de Telerik, creo que a estas alturas todo el mundo los conoce, lo que quizá no sea tan conocido, es que también disponen de una suite de controles para SharePoint, pero que todavía están en CTP. De todas formas, por lo que he leído, estos controles son webparts visuales, que internamente hacen uso de los mismos controles asp.net de Telerik (lo cual es muy lógico). Eso sí, tienen una configuración muy potente, y habrá que estar atento a sus versiones finales.

Cómo hacer uso de los controles de Telerik en SharePoint

Partimos de un proyecto SharePoint con un visual webpart.

Primero de todo, añadimos la referencia a la dll de Telerik: Telerik.Web.UI.dll. Como Telerik tiene controles para varias versiones del .NET Framework, tenemos que tener cuidado de seleccionar la versión 3.5 (por defecto en: C:Program Files (x86)TelerikRadControls for ASP.NET AJAX Q2 2011Bin35)

Seguidamente, al .ascx del visual webpart, le añadimos también la referencia:


En el paso anterior, es necesario indicar el nombre FQN del Assembly (con versión, culture, etc).

Ahora ya podemos añadir algún control de Telerik al visual webpart, por ejemplo el RadGrid.


Antes de hacer el deploy, hará falta preparar el paquete de la solución para que los controles de Telerik se marquen como seguros. Para ello, vamos a la pestaña “Advanced” del editor del Package, y añadimos la dll de Telerik, y marcamos como SafeControls los namespaces de Telerik.Web.UI y Telerik.Web.Design.

image

Nota: Los controles de Telerik asp.net AJAX, necesitan de al menos un ScriptManager para que funcionen. Como en SharePoint 2010 ya tenemos ese control por defecto en la MasterPage, pues no tenemos que hacer nada en especial.

Con esto, ya podemos desplegar el paquete y veremos el grid de Telerik dentro de nuestro webpart.

Como esto de sacar un grid vacío, no tiene mucha gracia, vamos a intentar mapearlo a una lista de nuestro Site. Para ello, lo ideal sería hacer uso del control SPDataSource, con algo como esto:


Sin embargo, si ese SPDataSource lo asignamos tal cual al Grid de Telerik, tendremos un error cuando la lista tiene elementos (curiosamente, el grid funciona bien cuando no hay elementos en la lista).

No he podido averiguar el motivo por el que no funciona enlazado directamente al SPDataSource, pero bueno, podemos hacerlo funcionar de varios motivos, como convirtiendo la lista de SharePoint a DataTable.


Y aquí vemos el resultado al insertar nuestro webpart en una página:

image

Y a partir de aquí, ya podemos explotar todas las ventajas de los controles de Telerik en nuestros desarrollos.

No funciona en modo Sandbox

Si intentamos hacer el deploy en modo sandbox sobre nuestro Office 365, obtenemos el siguiente error:

image

Como veis en el error, el grid deTelerik intenta hacer alguna operación no permitida en modo Sandbox. En el mismo foro de Telerik, confirman que sus controles no funcionan en modo sandbox, al parecer por algún problema del modo Sandbox con la interfaz IScriptControl. Al parecer, Telerik está intentando que Microsoft solucione el problema, tal como indica este enlace:

http://www.telerik.com/community/forums/sharepoint-2010/integrate-ajax-controls/visualwebpart-sandbox-solution-radgrid.aspx

Pues nada más, a pesar de no disponer de momento de los controles en modo Sandbox, poderlos utilizar en nuestras soluciones OnPremise, nos puede ahorrar mucho tiempo de desarrollo.

Espero que os sirva!!

Un saludo.