SharePoint Latin Rotating Header Image

January, 2010:

Remote Desktop Connection vs Virtual PC 2007 en proyecto InfoPath 2007

Recientemente en mi ambiente de desarrollo sucedió un comportamiento extraño que definitivamente hacia que mi experiencia fuese un tanto limitada. Resulta que al trabajar con InfoPath 2007 dentro de una máquina virtual la funcionalidad de copiar y pegar no trabaja bien en modo de diseño, en ocasiones si funciona y en otras no. Dentro de InfoPath 2007 al hacer Ctrl – X y después dentro de otra celda de una tabla hacer Ctrl – Y pues si me cortaba los controles mas no los pegaba de regreso y el Ctrl – Z de nuevo rehacía los controles en su posición anterior.

Confieso que hasta el momento no del todo sé que fue lo que paso realmente, pero una alternativa de solución es conectarme desde mi equipo huésped o algún otro vía remote desktop connection y listo, todo funciona como se espera que funcione.

Asumo que es un tema relacionado con el direccionamiento de la memoria RAM cuando usamos el portapapeles dentro de una máquina virtual.

Un par de recursos SharePoint 2010 que debes tener

Mi buen amigo Mario Ferrel me ha comentado sobre dos enlaces relacionados con SharePoint 2010 que seguro debes de tener. Get Started on SharePoint 2010 y SharePoint eMagazine son recursos muy valiosos que sin duda te podran al dia.

No dejemos de apoyar en momentos de crisis

En esta ocasión exhorto a mis colegas y amigos que leen este blog a que en medida de nuestras posibilidades apoyemos a la gente de Haití.

Algunos de los medios para lograrlo los enlisto a continuación:

Sientanse libre de indicar mas medios o formas de apoyo mediante los comentarios.

Gracias

Video de Business Connectivity Services y Outlook 2010

Aquí un video de Don Juan Balmori del equipo de BCS. Para los que no sepan Business Connectivity Services “BCS “ es la evolución de Business Data Catalog “BDC” en SharePoint.

Ahora BCS simplifica y potencializa aun mas las capacidades de integración de SharePoint con otras fuentes de datos externas para realizar operaciones de lectura y escritura, en particular lo que nos presentan en el video es como exponer el contenido externo registrado en SharePoint a objetos o artefactos de Outlook como calendario, tareas, contactos, etc. permitiendo a nuestros usuarios una experiencia de uso consistente con las herramientas que usamos día a día.

Cabe mencionar que una vez configurada una Lisa Externa en SharePoint 2010 la podemos conectar a Outlook mediante BCS donde tenemos un soporte de sincronización directo y servicios de cacheo local para trabajo fuera de línea.

Sin más dejo el video.

Llenado programatico de tablas repetibles en formularios InfoPath Form Services

Aquí una técnica que resulta interesante cuando trabajamos con formularios InfoPath Form Services de SharePoint Server 2007. Resulta que cuando usamos InfoPath 2007 combinado con Forms Services perdemos un tanto de funcionalidad como controles, opciones de filtrado y de conexión a datos externos es por ello que en ocasiones debemos de utilizar alternativas un tanto artesanal para simular el comportamiento esperado. Hoy quiero compartir una alternativa para poder presentar un listado de cuadros de verificación para permitir al usuario seleccionar más de una opción dentro de sus formularios InfoPath Form Services.

Una lista repetible en InfoPath es una especie de tabla de información vinculada a alguna fuente de datos que permite mostrar un arreglo de renglones con columnas y con sus correspondientes controles para el llenado o captura tabular, esta lista ya incluye la funcionalidad para agregar o eliminar renglones de forma automática. Bajo este contexto, el de mostrar una lista de cuadros de verificación para multi selección usaremos una lista para mostrar en una columna el  cuadro de verificación y en la otra su descripción, deshabilitaremos las opciones de edición de la lista para crear un efecto de despliegue.

image

Tomamos la lita repetible y la arrastramos sobre nuestro formulario, al hacerlo nos solicita que seleccionemos de cuantas columnas  requerimos la lista y seleccionamos dos.

image

El resultado es una lista repetible de forma tabular. Analisemos el esquema que InfoPath ha generado para representar esta lista con la finalidad de apreciar los nombres de los campos que estaremos utilizando en este ejemplo. group2 es un campo de tipo Grupo con la capacidad de auto repetir su contenido que en este caso son los campos field1 y field2

image

A continuacion dentro de nuestro fomulario transformamos a feld1 en cuadro de verificacion.

image

Realizamos el mismo procedimiento para la siguiente columna field2 solo que la cambiaremos a cuadro de expresion. Tambien podemos jugar con las propiedades de la lista repetible para esconder el encabezado y eliminar los bordes para generar el efecto deseado. Esto lo hacemos seleccionando las propiedades del objeto y accediendo a la pestaña de Display para deshabilitar la opcon de incluir el encabezado o Include Header. Asi mismo dentro de la pestaña Data deshabilitamos las opciones por defecto Default Settings y la de mostrar botón de inserción. Esto nos quita la opción de agregar soporte para agregar, modificar y eliminar elementos de forma automática..

image

Ya tenemos la estructura lista para poder codificar y cargar sobre ella una lista de datos que puede provenir de cualquier otra fuente de información.
A continuación desde InfoPath cargamos Visual Studio for Applications seleccionando del menú de herramientas la opción de programación y evento de carga.

image

No olvidemos primeramente guardar nuestro formulario y configurar un par de opciones dentro de la configuración de formulario o Form Options. En primer lugar dentro de Security and Trust especificamos nuestro formulario como Full Trust, esto se debe a que estaremos ejecutando código.

image

Y dentro de la sección programming seleccionemos que lenguaje de programación deseamos usar y en que carpeta guardaremos el código.

image 

Ya dentro de Visual Studio for Applications tenemos el código correspondiente al evento de carga del formulario. Es aquí donde puedes conectarte a otra fuente de datos ya sea de forma programática o directamente desde InfoPath.

De momento haremos el llenado manual de la lista repetible mediante el siguiente código de programación.

private const string STR_XPATH_Grupo = "/my:myFields/my:group1/my:group2";
        private const string STR_XPATH_Nodo = "/my:myFields/my:group1/my:group2/my:field2";
      
        private void CargaLista()
        {     
            // creamos una instancia de nuestro esquema principal
            XPathNavigator DOM = MainDataSource.CreateNavigator();

            // obtenemos una referencia del nodo repetible 
            XPathNavigator tableItem = DOM.SelectSingleNode(STR_XPATH_Grupo, this.NamespaceManager);
            XPathNavigator tableItemNode = null;
            
            // clonamos un elemento y lo asignamos a otra variable
            tableItemNode = tableItem.Clone();

            // obtenemos la ruta de donde estaremos actualizando la informacion dentro del elemento clonado          
            XPathNavigator target = tableItemNode.SelectSingleNode(STR_XPATH_Nodo, this.NamespaceManager);

            // establecemos la informacion a desplegar dentro del elemento clonado
            target.SetValue("hola");

            // insertamos el elemento clonado en la lista repetible
            tableItem.InsertAfter(tableItemNode);

            target = null;
            tableItemNode = null;


        }


 


El resultado:.



image



 



A continuación dejo una rutina un poco más elaborada donde se muestra como cargar una lista repetible que proviene de una fuente de datos externa configurada dentro de InfoPath.



  • En dataSource enviamos el nombre de nuestra conexión a otra fuente de datos configurada en InfoPath.
  • En tableRow enviamos la ruta XPath que apunta a grupo repetible de una lista repetible.
  • En fieldName especificamos el nombre del campo que deseamos mostrar en la descripción de la lista repetible.
  • En targetXPath especificamos la ruta XPath del nodo descripción de nuestra lista repetible.


 private void LoadSPListToRepeatingTable(string dataSource, string tableRow, string fieldName, string targetXPath)
        {       


            XPathNodeIterator list = DataSources[dataSource].CreateNavigator().Select("/xml/rs:data/z:row", this.NamespaceManager);
            XPathNavigator DOM = MainDataSource.CreateNavigator();
            XPathNavigator tableItem = DOM.SelectSingleNode(tableRow, this.NamespaceManager);
            XPathNavigator tableItemNode = null;
          

            foreach (XPathNavigator listItem in list)
            {

                if (tableItem != null)
                    tableItemNode = tableItem.Clone();


                string value = listItem.SelectSingleNode(fieldName, NamespaceManager).Value;
                XPathNavigator target = tableItemNode.SelectSingleNode(targetXPath, this.NamespaceManager);
                target.SetValue(value);
                tableItem.InsertAfter(tableItemNode);

                target = null;
                tableItemNode = null;


            }
            tableItem.DeleteSelf();
            tableItem = null;
            DOM = null;

        }


 



La invocación de esta rutina es:



           LoadSPListToRepeatingTable("Areas", "/my:myFields/my:Inicio/my:areas/my:areaRow", "@ows_LinkTitle", "/my:myFields/my:Inicio/my:areas/my:areaRow/my:areaDescripcion");



 



EL resultado seria algo asi:



image

Ya instalé SharePoint ¿y ahora qué?

20080712-pensar_mono El año pasado tuve la oportunidad de grabar una sesión especial para la iniciativa CILCLO DE CONOCIMIENTO SHAREPOINT de Colombia y hoy quiero compartir en mi blog la plática “Ya instalé SharePoint ¿y ahora qué?” donde describo las funcionalidades de la plataforma SharePoint desde el punto de vista tomador de decisiones.

Si andas buscando que tiene SharePoint para tu organización este es un webcast donde pueden empezar a
ver que hay en la plataforma.

Orador Destacado de Media Center en Microsoft Latam

clip_image001

 

En pasadas semanas recibi un correo electronico de la gente de Community Media Center de Microsoft Latam en donde se mencionan a los oradores destacados del 2009 y para mi suerte estuve enlistado ahi a lado de otros admirables colegas.

Para mi es una sorpresa el saber que gracias a las descargas y visualizaciones de los webcast que hemos dado durante el 2009 es de donde se obtiene esta lista. Y bueno, quiero agradecer a la gente que se toma el tiempo de acceder, visualizar y descargar las sesiones.

Gracias al equipo de Latam Media Center y estaremos generando contenido en este 2010.

 

http://www.mslatam.com/latam/mediacenter/OradoresDestacados.aspx

Instalador del .NET Framework 2.0 Configuration Tool

image

Ya en un entorno de producción no siempre contamos con las mismas herramientas que tenemos en un ambiente de desarrollo. Este   es el caso del .NET Framework 2.0 Configuration Tool que particularmente cuando construimos add ins para Office en ocasiones necesitamos tener en el equipo final para establecer o configurar algo en el Code Access Security o Global Assembly Cache.

Bien, pues aquí dejo el URL donde puedes descargar el instalador de esta herramienta.

Configuration tool installer for .NET Framework 2.0

Generando Hash de una cadena de texto mediante algoritmo MD5 en C#

Aqui una rutina para generar el Hash de una cadena de texto basado en el algoritmo MD5.

public static string GetMD5Hash(string passwordString)
        {

            if (string.IsNullOrEmpty(passwordString))
            {
                throw new  ArgumentNullException("passwordString");
            }
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

                byte[] data = md5.ComputeHash(Encoding.Default.GetBytes(passwordString));

                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < data.Length; i++)
                {
                    sb.Append(data[i].ToString("x2"));

                }
            
            return sb.ToString();

        }


 static void Main(string[] args)
        {
            string result = GetMD5Hash("Hola mundo!");
            Console.WriteLine(result);
        }


El resultado de Hash de Hola mundo! es daaef200ebb921e011e3ae922dd3266b

WebCast de Desarrollo SharePoint 2010

Aquí les dejo una invitación a 3 webcast técnicos para desarrolladores que requieran conocer lo nuevo de SharePoint 2010. Sin duda  las funcionalidades de SharePoint 2010 han sido extendidas y mejoradas, se han agregado algunas otras que hacen sentido y hacían falta.

En esta serie de webcast exploraremos lo siguiente, sigue la liga el dia del evento:

  1. sp2010_2[1]Tecnologías y Productos SharePoint 2010 para Desarrolladores 
    En esta sesión veremos los principales cambios y características de desarrollo que SharePoint 2010 pone en la mesa para los desarrolladores. Veremos como estas nuevas herramientas facilitan la experiencia y mejoran la productividad del desarrollador así mismo exploraremos las características de Visual Studio 2010 para SharePoint.


Fecha: 29/01/2010 (dd/mm/yyyy).
Hora: 10:00 (GMT-05:00 Colombia, Panama).
Si tiene dudas con la conversión de zonas horarias, por favor haga clic Aquí.

  1. Alternativas de Desarrollo con SharePoint 2010 y Silverlight 3
    En esta sesión veremos cómo utilizar Silverlight 3 para construir ricas y poderosas aplicaciones sobre SharePoint 2010. Cubriremos los temas de soporte Silverlight pre fabricado en SharePoint 2010, uso del modelo de objeto disponible para Silverlight, integración de servicio y personalizaciones visual.


Fecha: 12/02/2010 (dd/mm/yyyy).
Hora: 10:00 (GMT-05:00 Colombia, Panama).
Si tiene dudas con la conversión de zonas horarias, por favor haga clic Aquí.

  1. Uso de Servicios en SharePoint 2010 para la integración de aplicaciones
    SharePoint cada vez se integra más a la TI de una organización, muchos desarrolladores crean servicios para integrar aplicaciones de línea de negocio a SharePoint. En esta sesión veremos la variedad de alternativas de comunicación e integración mediante servicios que SharePoint 2010 soporta como ASP.NET, WCF y REST. Veremos que alternativa funciona para el escenario apropiado.


Fecha: 01/03/2010 (dd/mm/yyyy).
Hora: 14:00 (GMT-05:00 Colombia, Panama).
Si tiene dudas con la conversión de zonas horarias, por favor haga clic Aquí.


Espero contar con tu presencia y compartir contigo la visión que tiene Microsoft para constituir una plataforma empresarial para colaborar y compartir información entre personas y sistemas.


Te espero.


 


Haarón I. González H. clip_image001


MCT, MCAD, MCTS en SharePoint, MVP en SharePoint
(Skype: haarongonzalez, MSN: haarongonzalez@hotmail.com, Blog: http://msmvps.com/blogs/haarongonzalez, Twitter: haarongonzalez)