martes, 13 de octubre de 2015

Dando formato a una carta en un elemento Web de SharePoint

Hay veces que necesitamos construir el formato de una carta para ser desplegada en un elemento Web.  Para darle formato necesitamos escribir código HTML de forma dinámica y luego desplegarla al momento que elemento Web es cargado en la página de SharePoint.

image

Lo primero es definir un control asp.net Literal ya que este escribe exactamente lo que le enviemos sin realizar ninguna conversión, esto nos permitirá enviar código HTML dentro del texto.  Asi como se demuestra a continuación:

   <asp:Literal runat="server" ID="uiCarta"></asp:Literal>

En el código adyacente o Code Behind podemos encontrar la siguiente declaración.

public string Carta
       {
           set
           {
               uiCarta.Text = value;
           }
       }

Definimos una propiedad tipo String y definimos el valor a ingresar es para la propiedad Text del control Literal.

Para facilitar su comprensión asumiremos de la definición al obtendremos de codigo definido a continuacion.

var carta = @”

Señores

<b>[NombreUsuario]</b>

<br>

[Departamento]

<br><div style=”text-align:justify”>

Por este medio deseo indicarle…. blalablalallal

</div><br>

<table style=”width=100%;”>

<tr>

<td style=”width=50%;”>

Vo.Bo.

</td>

<td style=”width=50%;”>

Revisado

</td>

</tr>

</table>

”;

carta= carta.replace(“[Usuairo]”,SPContext.Current.Web.CurrentUser.Name).Replace(“[Departamento]”,userDepartmentVariable);

_vista.Carta = carta;

El Resultado es el siguiente:

image

Eso es todo.   Una solución sencilla para un requerimiento común.

Code4Fun!,

Juan Manuel Herrera Ocheita

jueves, 8 de octubre de 2015

Ojo con las dependencias al desinstalar una solución de granja en SharePoint

Las soluciones de granja de SharePoint siguen siendo requeridas por los clientes con instalaciones On Premises.  Como es una solución de granja afecta a toda la granja de SharePoint y esto incluye las Aplicaciones Web configuradas en la granja a pesar que cuando lo instalé indique que era sobre una aplicación Web en especifico.

El Escenario

AjaxControlToolKit.dll es una libreria que nos ayudará a mejorar los controles disponibles en asp.net y como empresa nosotros la utilizamos en las aplicaciones que entregamos a nuestros clientes sobre SharePoint Server.  Esta libreria no le va bien instalada en el Global Assembly Cache, es mejor instalarla en el directorio bin de la aplicación Web elegida.

Esto lo hacemos especificando en el Package del Proyecto de SharePoint Visual Web Part que incluya el ensamblado a nivel de la WebApplication, como se muestra en la imagen de abajo.

image

El Problema

En esta granja de SharePoint habian otras aplicaciones Web donde habiamos instalado otras soluciones utilizando la libreria AjaxControlToolKit.dll.   Lo que sucedio fue que al actualizar la solución en la granja la desinstalamos y la volvimos a instalar, a través de los comandos uninstall-SPSolution y Remove-SPSolution, eliminó de las otras aplicaciones Web la libreria AjaxControlToolKit.dll.  Y aunque volvimos a instalar la solución que estabamos probando con add-SPSolution y install-SPSolution, no volvio a instalar la libreria en las demás aplicaciones Web.

Los comandos ejecutados para re-instalar fueron los siguientes:

PS C:\> Uninstall-SPSolution –Identity infoware.doc.publicadosui.wsp 

PS C:\> Remove-SPSolution -Identity infoware.doc.publicadosui.wsp

PS C:\> Add-SPSolution –LiteralPath c:\instaladores\infoware.doc.publicadosui.wsp

PS C:\> Install-SPSolution -Identity infoware.doc.publicadosui.wsp -WebApplicat
on http://sitioprueba -GACDeployment

La Solución

Al repotarnos el error el usuario final, lo que hicimos fue copiar la libreria AjaxControlToolKit.dll en las aplicaciones Web que nos reportaron el error.  La solución fue sencilla, pero nos sorprendió la forma de comportarse al desintalar la solución de granja sobre el resto de aplicaciones Web.

Lexión Aprendida

A pesar que dirigimos la instalación a una aplicación Web por cuanto es una solución de Granja necesitamos realizar un respaldo del directorio bin y validar las librerias dependientes que coicidan con la solución que estamos instalando nosotros, y validar que continuen funcionando como lo solian hacer.

Code4Fun & Share2KeepBusy,  Smile

Juan Manuel Herrera Ocheita

viernes, 2 de octubre de 2015

Cannot unregister UpdatePanel since it was not registered with ScriptManager en un elemento Web de SharePoint

 

El error es el siguiente:

clip_image002

El error es algo confuso, ya que posiblemente ya hayamos definido el update panel en otro elemento web y no nos da el error.

El problema es en la definición declarativa de los elementos en SharePoint.   En mi particular caso el elemento Web estaba siendo implementado dentro de la solución WSP adicionandolo a una pagina que despliega el elemento web, como se muestra a continuación el código de la página.

clip_image002[5]

Si puedes observar el WebPartZone se llama wpSeguros2 pero en la definición de Elements.xml del Modulo que se utiliza para crear una pagina que incluya el elemento web cuando se instala la solución.  (Si quieres saber mas de como agregar una pagina de elementos web que se incluya dentro de tu solución pueder ver el siguiente enlace https://amalhashim.wordpress.com/2013/02/14/sharepoint-deploy-webpart-page-using-module/)

image

El problema se debio a que no coincide el WebPartZone ya que se llama wpSeguros y allí esta todo el problema, ya que SharePoitn si incluye el elemento Web a la página pero en una nueva zona que no esta definida en la plantilla y esto le afecto el updatepanel.

 

clip_image002[7]

Esto es todo espero a verles ayudado.

SharePoint4Fun!,

Juan Manuel Herrera Ocheita