El CrystalReportViewer, la carpeta aspnet_client, los módulos de combinación y mi dolor de cabeza!!

Ay ay ay, ¡¡que dolor de cabeza!!, si es que nos empeñamos en complicar las cosas. Vereis. Resulta que tengo una aplicación web que utiliza el control CrystalReportViewer para visualizar un report que he creado con el «Crystal Report para Visual Studio .NET 2005» (concretamente la versión Team para desarrolladores, aunque esto es lo de menos). Este control cuando se inserta en una página web muestra una barra de herramientas (configurable desde las propiedades) con lindos botones sobre fondo negro-grisáceo como por ejemplo, imprimir (ya en la versión 2005 sí aparece este botón y no es necesario pasar el report a pdf para imprimirlo), primera, anterior, siguiente y última página, exportar, en fin, lo típico. Ahhh!! que chulo (dije yo) y además me soluciona el problema que tenía con reporting services de caja de texto sin propiedad KeepTogether (que manda güevos esto!!!, lo podeis leer en otro post mío) con lo cual tengo un Informe de Alta (este es el report) muy muy historiado.


Inocente yo (y a la vez enterao por no leer sobre crystal), me da por hacer copy/paste para desplegar la aplicación al IIS y claro, me empieza a doler la cabeza. ¡¡DEL INFORME NADA DE NADA!!. Primero que veo, se necesitan unos módulos de combinación según la versión de Crystal Report usada que se bajan desde la web de la empresa bussinesobjects (creadora de Crystal Reports) que, añadidos a un proyecto de instalación web, permiten desplegar la instalación ejecutando el msi resultante de dicho proyecto de instalación. Vale!!  (me digo tras algunos problemas con la descarga) ya tengo el modulito de combinación para «Crystal Report para Visual Studio .NET 2005», monto mi proyecto de instalación, añado el módulo de combinación, los ficheros de la aplicación que quiero desplegar, genero el proyecto y lo instalo. Genial!!, ya veo el report, pero …. eyyy …. que pasa?, ¿por qué la barra de botones del CrystalReportViewr no muestra las imágenes de los botones y el fondo negro-grisáceo que veía en mi Visual Studio .NET 2005 se ha tornado blanco nieve?. Y lo peor, NO FUNCIONAN los botones de barra, no puedo imprimir!!!. Ahora sí que me duele la cabeza.


…. días de búsqueda de una posible solución al problema y con fuertes dolores de cabeza ….


Al fin, la solución (lo dicho, nos gusta complicarnos). Resulta que cuando se instala CrystalReport se crea una carpeta en el wwwroot que contiene todo lo necesario para que el visor de CrystalReport pueda funcionar, es decir, los script, las páginas que usa, las imágenes de la barra, vamos toito to. Muy bien, si mi aplicación web residiera dentro del sitio web predeterminado (wwwroot) del IIS no hubiera tenido problemas ya que el control tira de esta carpeta, es decir, la gente de Crystal dan por hecho que voy a montar mi aplicación web ahí, pero resulta que, como la mayoría de los mortales que montan web, tengo mi propio sitio web y es ahí donde quiero desplegar mi aplicación web. Por tanto, y tras muchos dolagial, me da por copiar la carpeta aspnet_client en la raiz de mi sitio web y, ooohhhh!!!, todo como la seda, imágenes, fondo negro-grisáceo, los botones funcionan y ¡¡al fin!! tengo el informe de alta terminado. Ahhh!! una última cosilla, en las propiedades del CrystalReportViewer hay que especificar donde están las imágenes en la propiedad ImageToolBarURL que en este caso será aspnet_client/system_web/2_0_50727/CrystalReportWebFormViewer3/images/toolbar/ (ver para creer).


Finalmente me dejó de doler la cabeza ;-).