¿Que nos faltó para crear un ToolBoxData para SharePoint Designer?

Bueno, esta entrada va dedicada a quienes quieran crear sus propios Menús, u otro tipo de ToolBoxData para ser ocupados a través de Designer para un sitio SharePoint (WSS o MOSS).

Primero que todo, debemos crear nuestro proyecto WSPBuilder (recuerden que éste se baja desde codeplex, es gratuito, y queda como una extensión de nuestro Visual Studio).

Al ser un proyecto que afectará a Designer, no tenemos que crear páginas .aspx ni trabajar con masterPages, sólo debemos indicarle a nuestro código, que lo que estamos creando pasará a ser parte de nuestro Designer y que quedará disponible para ser agregado en SharePoint.

Manos a la obra!

La magia está en esta simple línea de código: [ToolboxData(“<{0}:<nombre de la clase> runat=\”server\” />”)]

Otro Detalle: debemos revisar los “Permisos”… :

[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]

y porsupuesto… debemos indicarle a nuestro código, que éste heredará de la clase “System.Web.UI.WebControls.Menu”

public class <nombre de la clase> : System.Web.UI.WebControls.Menu

Acá les dejo la lista completa de los WebControls que se pueden crear, el link completo de MSDN (la tabla de clases y especificaciones es muy larga como para colocarla acá).

http://msdn.microsoft.com/es-es/library/system.web.ui.webcontrols(v=VS.90).aspx

y bueno… un poco de código guía:

foreach (SPList list in SPContext.Current.Web.Lists)            {

String vista= VirtualPathUtility.GetDirectory(list.DefaultViewUrl);

List<MenuItem> itemList;

if (itemByUrlDictionary.TryGetValue(vista, out itemList) == false) { continue; }
foreach (MenuItem menuItem in itemList)                {

menuItem.ChildItems.Clear();

foreach (SPView view in list.Views)                    {

String menuItemValue = menuItem.Value == menuItem.Text ? String.Empty : menuItem.Value;

if (view.Hidden == true || view.Title.StartsWith(menuItemValue) == false) { continue; }

MenuItem childItem = new MenuItem(view.Title) {

NavigateUrl = String.Format(“{0}/{1}”,serverRelativeUrl,view.Url)

};

menuItem.ChildItems.Add(childItem);

}

}

}

Bueno espero que les haya parecido interesante, y acá les dejo algunos links de MSDN para tener más información.

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.toolpane.aspx

http://msdn.microsoft.com/en-us/library/system.web.ui.toolboxdataattribute.aspx

Acerca de conytaherrera

Ingeniero en Informática, algo raro eso si, pues siempre pensé que terminaría en otra cosa (xD), feliz de la mano con mi hijo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s