<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Haaron Gonzalez : C#</title><link>http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx</link><description>Etiquetas: C#</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Programación de WebParts de SharePoint 2010 con Visual Studio 2010, pan comido para un desarrollador .NET</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2013/04/23/programaci-243-n-de-webparts-de-sharepoint-2010-con-visual-studio-2010-pan-comido-para-un-desarrollador-net.aspx</link><pubDate>Tue, 23 Apr 2013 16:11:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:209270</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=209270</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2013/04/23/programaci-243-n-de-webparts-de-sharepoint-2010-con-visual-studio-2010-pan-comido-para-un-desarrollador-net.aspx#comments</comments><description>&lt;p&gt;T&amp;uacute; como programador .NET seguramente has escuchado hablar de SharePoint y muy probablemente en las bolsas de trabajo encuentras que un plus en tu curr&amp;iacute;culo como programador es saber SharePoint o programar en SharePoint. Bien, pues aqu&amp;iacute; tienes un video que publique en mi canal de YouTube donde como programador puedes conocer lo siguiente de SharePoint:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Que son los WebParts
&lt;/li&gt;
&lt;li&gt;Como est&amp;aacute;n constituidos
&lt;/li&gt;
&lt;li&gt;Que elementos o clases usamos para construirlos
&lt;/li&gt;
&lt;li&gt;Como programarlos y con qu&amp;eacute; herramientas
&lt;/li&gt;
&lt;li&gt;Como empaquetarlos para su portabilidad
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Date el tiempo ver este video, especialmente desde la demostraci&amp;oacute;n ya que se explica y se muestra lo b&amp;aacute;sico de la construcci&amp;oacute;n de un webpart, m&amp;uacute;ltiples enfoques de empaquetamiento e incluso hasta el uso de AJAX.
&lt;/p&gt;
&lt;p&gt;
&lt;iframe width="853" height="480" src="http://www.youtube.com/embed/XkZ9rTfzp74" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=209270" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+Framework++3.5/default.aspx">.NET Framework  3.5</category></item><item><title>Programando con Listas en Windows SharePoint Services 3.0</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2013/04/10/programando-con-listas-en-windows-sharepoint-services-3-0.aspx</link><pubDate>Wed, 10 Apr 2013 19:59:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:209134</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=209134</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2013/04/10/programando-con-listas-en-windows-sharepoint-services-3-0.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX" style="mso-ansi-language:ES-MX;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Aqu&amp;iacute; un entrenamiento que di hace muchos a&amp;ntilde;os para una empresa en la que trabaj&amp;eacute; como l&amp;iacute;der de practica de colaboraci&amp;oacute;n. B&amp;aacute;sicamente prepar&amp;eacute; esta presentaci&amp;oacute;n para mostrar a programadores como manejar listas y elementos de forma program&amp;aacute;tica a fin de introducirlos al mundo de la programaci&amp;oacute;n SharePoint.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ES-MX" style="mso-ansi-language:ES-MX;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:small;"&gt;Durante una revisi&amp;oacute;n a un respaldo me encontr&amp;eacute; con los archivos fuente de este WebCast y decid&amp;iacute; compilarlo como video para subirlo a &lt;a href="http://www.youtube.com/haarongo"&gt;mi canal&lt;/a&gt; de Youtube. Si por alguna raz&amp;oacute;n sigues dando soporte a plataforma SharePoint 2007 (MOSS o WSS 3.0) en temas de programaci&amp;oacute;n este video sin duda es una referencia que te permitir&amp;aacute; entender los fundamentos de programaci&amp;oacute;n de listas en SharePoint. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span lang="ES-MX" style="mso-ansi-language:ES-MX;"&gt;&lt;span style="font-family:Calibri;"&gt;Adem&amp;aacute;s, creo que los temas aqu&amp;iacute; mencionados tambi&amp;eacute;n aplican para SharePoint 2010 &lt;/span&gt;&lt;/span&gt;&lt;span lang="ES-MX" style="font-family:Wingdings;mso-ansi-language:ES-MX;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;"&gt;&lt;span lang="ES-MX" style="font-family:Wingdings;mso-ansi-language:ES-MX;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;span style="mso-char-type:symbol;mso-symbol-font-family:Wingdings;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe width="640" frameborder="0" src="http://www.youtube.com/embed/2Uf4GINu0ko" height="480"&gt;&lt;/iframe&gt;&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=209134" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Code/default.aspx">Code</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+2.0/default.aspx">.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2007/default.aspx">SharePoint 2007</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Soporte/default.aspx">Soporte</category></item><item><title>Análisis de Código para SharePoint Online</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2013/04/04/an-225-lisis-de-c-243-digo-para-sharepoint-online.aspx</link><pubDate>Fri, 05 Apr 2013 05:39:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:209064</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=209064</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2013/04/04/an-225-lisis-de-c-243-digo-para-sharepoint-online.aspx#comments</comments><description>&lt;p&gt;Aún recuerdo FxCop como una de las primeras herramientas que teníamos disponibles los programadores .NET para revisar nuestro código y evaluarlo contra las practicas recomendadas y de esta forma poder mitigar potenciales riesgos de desempeño, seguridad, acceso a datos, etc. Desde el punto de vista de un programador SharePoint podemos utilizar herramientas para revisar nuestro código de la misma forma por ejemplo las herramientas de análisis de código de Team Foundation sin duda nos dan una información muy valiosa, pero, en el mundo SharePoint debido al modelo de objetos y a las diversas tecnologías disponibles sabemos que se tienen otras reglas de codificación o prácticas de programación adicionales a las de .NET y en ese sentido ¿no sería útil contar con una herramienta que te revisa el código SharePoint?&lt;/p&gt;  &lt;h2&gt;&lt;a href="https://caf.sharepoint.microsoftonline.com/"&gt;MICROSOFT SHAREPOINT ONLINE CODE ANALYSIS FRAMEWORK (MSOCAF)&lt;/a&gt;&lt;/h2&gt;  &lt;p&gt;Es una herramienta de revisión y diagnóstico de código de programación de soluciones SharePoint que nos permite identificar inconsistencias &lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7823.clip_5F00_image001_5F00_73F18DF3.png"&gt;&lt;img title="clip_image001" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:right;padding-top:0px;padding-left:0px;margin:5px 5px 5px 0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" hspace="12" alt="clip_image001" align="right" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3286.clip_5F00_image001_5F00_thumb_5F00_0157A0FA.png" width="194" height="44" /&gt;&lt;/a&gt;de programación en distintas áreas para asegurar la calidad de nuestros desarrollos en ambientes o entornos compartidos. MSOCAF ofrece todo un proceso de revisión de soluciones, se utiliza para validar las soluciones de programación que se publican en SharePoint Online de Office 365 y que ahora tenemos disponible para revisar nuestras aplicaciones tanto para soluciones SharePoint Online 2010 y 2013. &lt;/p&gt;  &lt;p&gt;Las reglas que revisa son:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Rule Tests Against &lt;/li&gt;    &lt;li&gt;Use of SPList.Items &lt;/li&gt;    &lt;li&gt;SPListItemCollection\GetItemByID inside loop &lt;/li&gt;    &lt;li&gt;SPQuery without Row Limit property &lt;/li&gt;    &lt;li&gt;SPQuery Row Limit value range &lt;/li&gt;    &lt;li&gt;Timer jobs &lt;/li&gt;    &lt;li&gt;Out-of-the-box files modification &lt;/li&gt;    &lt;li&gt;Verbose logging \ tracing &lt;/li&gt;    &lt;li&gt;Deprecated APIs &lt;/li&gt;    &lt;li&gt;Editing Web config files &lt;/li&gt;    &lt;li&gt;Inline code ASPX pages &lt;/li&gt;    &lt;li&gt;SPListItem.Update() inside loop &lt;/li&gt;    &lt;li&gt;SPMonitoredScope Web Part check* &lt;/li&gt;    &lt;li&gt;SPDiagnostics Service &lt;/li&gt;    &lt;li&gt;ULS logging &lt;/li&gt;    &lt;li&gt;BlobCache value editing in web.config &lt;/li&gt;    &lt;li&gt;RunWithElevatedPrivileges restrictions &lt;/li&gt;    &lt;li&gt;SharePointQueryWebPartsCheck &lt;/li&gt;    &lt;li&gt;Windows Claims Check &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Así que no está nada mal poder incluir el uso de esta solución como parte del proceso de revisión de código de programación en nuestros equipos. Ahora, esta solución ha sido diseñada para Office 365 y SharePoint Online, sin embargo, desde mi muy particular opinión sí creo que nos da un soporte para revisar nuestras soluciones On Premise. &lt;/p&gt;  &lt;p&gt;Sin más que decir por el momento aquí les dejo el enlace: &lt;a href="https://caf.sharepoint.microsoftonline.com/"&gt;https://caf.sharepoint.microsoftonline.com/&lt;/a&gt;&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=209064" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Code/default.aspx">Code</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Practicas/default.aspx">Practicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Programacion/default.aspx">Programacion</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2013/default.aspx">SharePoint 2013</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+Online/default.aspx">SharePoint Online</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/An_E100_lisis+de+C_F300_digo/default.aspx">Análisis de Código</category></item><item><title>Validando la contraseña de las cuentas de una implementación SharePoint</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2013/01/30/validando-la-contrase-241-a-de-las-cuentas-de-una-implementaci-243-n-sharepoint.aspx</link><pubDate>Thu, 31 Jan 2013 01:15:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:208414</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=208414</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2013/01/30/validando-la-contrase-241-a-de-las-cuentas-de-una-implementaci-243-n-sharepoint.aspx#comments</comments><description>&lt;p&gt;Me pidieron que validara las cuentas que utilizamos para instalar SharePoint en un ambiente de producci&amp;oacute;n  y pues la gente de la mesa de soporte al ver que mi petici&amp;oacute;n no tiene tanta urgencia &amp;quot;seg&amp;uacute;n ellos&amp;quot; y&amp;nbsp; conforme  a sus acuerdos de niveles de servicio me informaron que en una semana me tendr&amp;iacute;an la respuesta a mi solicitud.  El problema a solucionar es que no se sab&amp;iacute;a si la contrase&amp;ntilde;a X era la misma que se us&amp;oacute; en todas las cuentas de SharePoint, en total  fueron 9 cuentas y dado que en una semana ni siquiera estar&amp;eacute; aqu&amp;iacute; f&amp;iacute;sicamente me vi en la necesidad de encontrar una soluci&amp;oacute;n alterna r&amp;aacute;pidamente.  
&lt;/p&gt;
&lt;p&gt;Las cuentas a validar fueron:
&lt;/p&gt;
&lt;p&gt;POLLOLOCO\SP_farm&lt;br /&gt;POLLOLOCO\SP_services&lt;br /&gt;POLLOLOCO\SP_web&lt;br /&gt;POLLOLOCO\SP_search&lt;br /&gt;POLLOLOCO\SP_sync&lt;br /&gt;POLLOLOCO\SP_superuser&lt;br /&gt;POLLOLOCO\SP_superreader&lt;br /&gt;POLLOLOCO\SP_crawl&lt;br /&gt;POLLOLOCO\SP_unattended
&lt;/p&gt;
&lt;p&gt;Estimado lector, para solucionar tu problema, &amp;iquest;qu&amp;eacute; har&amp;iacute;as si en alg&amp;uacute;n momento de tu vida fuiste un apasionado programador .NET y sabes que puedes hacer al respecto?, &amp;iquest;Te esperar&amp;iacute;as a que la gente de mesa de soporte de acuerdo a sus prioridades te responda?, &amp;iquest;serias un radical y con el poder que el conocimiento te da resolver&amp;iacute;as t&amp;uacute; mismo tus problemas, claro sin que muera nadie?
&lt;/p&gt;
&lt;p&gt;En mi caso decid&amp;iacute; bajar &lt;a href="http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products"&gt;Visual Studio 2012 Express for Windows Desktop &lt;/a&gt; y escribir una aplicaci&amp;oacute;n de consola que utilizando el namespace de &lt;span style="font-family:Courier;"&gt;&lt;b&gt;System.DirectoryServices&lt;/b&gt;&lt;/span&gt; pudiese consultar el active directory en cuesti&amp;oacute;n y validar las credenciales que necesito validar. En tan solo 12 minutos ya ten&amp;iacute;a mi instancia de  &lt;a href="http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products"&gt;Visual Studio 2012 Express for Windows Desktop &lt;/a&gt;instalada, durante la descarga busqu&amp;eacute; en internet y encontr&amp;eacute; que desde la versi&amp;oacute;n 3.5 del .NET Framework se incluy&amp;oacute; una nueva funcionalidad para gesti&amp;oacute;n de active directory la cual se encuentra en &lt;span style="font-family:Courier;"&gt;&lt;b&gt;System.DirectoryServices.AccountManagement&lt;/b&gt;&lt;/span&gt; y pues utilizando la clase &lt;span style="font-family:Courier;"&gt;&lt;b&gt;PrincipalContext&lt;/b&gt;&lt;/span&gt;  pude invocar el m&amp;eacute;todo &lt;span style="font-family:Courier;"&gt;&lt;b&gt;ValidateCredentials&lt;/b&gt;&lt;/span&gt; con el cual sabr&amp;iacute;a si la cuenta X o Y era v&amp;aacute;lida.
&lt;/p&gt;
&lt;p&gt;El c&amp;oacute;digo lo comparto aqu&amp;iacute;:
&lt;/p&gt;
&lt;pre style="margin:0em;overflow:auto;background-color:#ffffff;"&gt;&lt;code style="font-family:Consolas,&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:10pt;color:#000000;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System;
&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.DirectoryServices.AccountManagement;

&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; TestAccount
{

    &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Program
    {

        &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[] args)
        {

            &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; isValidAccount = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;

            Console.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Domain Name (NetBios):&amp;quot;&lt;/span&gt;);
            &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; domainName = Console.ReadLine();

            Console.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;User account:&amp;quot;&lt;/span&gt;);
            &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; accountName = Console.ReadLine();

            Console.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Password:&amp;quot;&lt;/span&gt;);
            &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; accountPassword = Console.ReadLine();

            &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;
            {

                &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.IsNullOrEmpty(domainName) || &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.IsNullOrEmpty(accountName) || &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.IsNullOrEmpty(accountPassword))
                    &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ArgumentNullException();

                &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (PrincipalContext context = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; PrincipalContext(ContextType.Domain, domainName))
                {                    
                    isValidAccount = context.ValidateCredentials(accountName, accountPassword);
                }

                Console.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;{0}\\{1} - {2}&amp;quot;&lt;/span&gt;,domainName, accountName, isValidAccount.ValidNotValidString());              
            }
            &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (Exception ex)
            {
                Console.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Error: {0}&amp;quot;&lt;/span&gt;,ex.Message);
            }
            &lt;span style="color:#0000ff;"&gt;finally&lt;/span&gt;
            { 
                Console.ReadKey(); 
            }       
            
        }
    }

    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; BooleanExtensions
    {
        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; ValidNotValidString(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; value)
        {
            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; value ? &lt;span style="color:#a31515;"&gt;&amp;quot;Valid account&amp;quot;&lt;/span&gt; : &lt;span style="color:#a31515;"&gt;&amp;quot;Not Valid account, check username or password!&amp;quot;&lt;/span&gt;;
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Y la soluci&amp;oacute;n aqu&amp;iacute; tambi&amp;eacute;n la puedes encontrar en el attachment, dentro esta el ejecutable compilado.
&lt;/p&gt;
&lt;p&gt;PD. Cuando el equipo de la mesa de ayuda me contacte de 5 d&amp;iacute;as, que le deber&amp;iacute;a de decir en respuesta?
&lt;/p&gt;
&lt;p&gt;Saludos
&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=208414" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+Framework++3.5/default.aspx">.NET Framework  3.5</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Active+Directory/default.aspx">Active Directory</category></item><item><title>Paquete de 101 códigos de ejemplo en desarrollo SharePoint 2010</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2012/02/22/paquete-de-101-c-243-digos-de-ejemplo-en-desarrollo-sharepoint-2010.aspx</link><pubDate>Wed, 22 Feb 2012 18:32:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:203497</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=203497</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2012/02/22/paquete-de-101-c-243-digos-de-ejemplo-en-desarrollo-sharepoint-2010.aspx#comments</comments><description>&lt;p&gt;En el blog oficial del &lt;a href="http://blogs.msdn.com/b/sharepointdev"&gt;equipo de desarrollo SharePoint&lt;/a&gt; de Microsoft se ha publicado una entrada referente a un &lt;a href="http://blogs.msdn.com/b/sharepointdev/archive/2012/02/22/sharepoint-101-code-samples-are-now-available.aspx"&gt;paquete de ejemplos de código sobre SharePoint 2010&lt;/a&gt; lo cual me parece fabuloso. Estuve revisando la lista de ejemplos y se deja ver que este es un excelente recurso para programadores SharePoint y/o principiantes. &lt;/p&gt;  &lt;p&gt;Puedes descárgalo &lt;a href="http://code.msdn.microsoft.com/SharePoint-2010-101-Code-da251182"&gt;aquí&lt;/a&gt; y estoy seguro será de utilidad&lt;/p&gt;  &lt;p&gt;HG&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203497" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Code/default.aspx">Code</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Learning/default.aspx">Learning</category></item><item><title>Excepción cuando trabajamos con DirectoryServices</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2011/08/25/excepci-243-n-cuando-trabajamos-con-directoryservices.aspx</link><pubDate>Thu, 25 Aug 2011 08:29:27 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:199959</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=199959</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2011/08/25/excepci-243-n-cuando-trabajamos-con-directoryservices.aspx#comments</comments><description>&lt;p align="left"&gt;&lt;img style="margin:15px;display:inline;float:left;" align="left" src="http://s2.subirimagenes.com/otros/previo/thump_5003913que-alguien-me-exiqu.jpg" width="275" height="197" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Algo que hoy descubrí con asombro es que cuando trabajamos con las clases de &lt;strong&gt;System.DirectoryServices&lt;/strong&gt; en específico &lt;strong&gt;DirectoryEntry&lt;/strong&gt; para hacer consultas en un directorio activo es importante pasar la ruta del servidor LDAP utilizando mayúsculas en la cadena. &lt;/p&gt;  &lt;p&gt;Si, así es. &lt;/p&gt;  &lt;p&gt;Si utilizamos la línea con letra minusculas:&lt;/p&gt;  &lt;h3 align="center"&gt;&lt;strong&gt;DirectoryEntry de = new DirectoryEntry(&amp;quot;ldap://litwaredc:389/CN=Users,DC=litwareinc,DC=com&amp;quot;);&lt;/strong&gt; &lt;/h3&gt;  &lt;p&gt;Surgirá una excepción de tipo COM. La dirección DN es correcta, solo que se necesita modificar la parte ldap por LDAP para que &lt;strong&gt;DirectoryEntry&lt;/strong&gt; se digne a funcionar como se espera.&lt;/p&gt;  &lt;h3 align="center"&gt;&lt;strong&gt;DirectoryEntry de = new DirectoryEntry(&lt;a&gt;LDAP://litwaredc:389/CN=Users,DC=litwareinc,DC=com&lt;/a&gt;);&lt;/strong&gt; &lt;/h3&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="left"&gt;Seguro existe una razón, sin embargo que alguien me explique!&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=199959" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Suck/default.aspx">Suck</category></item><item><title>Usando los controles de SharePoint en WebParts</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2011/07/28/usando-los-controles-de-sharepoint-en-webparts.aspx</link><pubDate>Thu, 28 Jul 2011 17:30:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:198474</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=198474</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2011/07/28/usando-los-controles-de-sharepoint-en-webparts.aspx#comments</comments><description>&lt;p&gt;Sin duda, con el poder viene la responsabilidad. En pasados d&amp;iacute;as publiqu&amp;eacute; un &lt;a target="_blank" href="http://geeks.ms/blogs/haarongonzalez/archive/2011/07/06/programaci-243-n-asp-net-en-webparts-de-sharepoint.aspx"&gt;post &lt;/a&gt;acerca de c&amp;oacute;mo utilizar los controles de ASP.NET y toda su experiencia &lt;span style="text-decoration:line-through;"&gt;gloria&lt;/span&gt; dentro de WebParts de SharePoint. Sin embargo, al utilizar esta estrategia un conjunto de consideraciones subsecuentes deber&amp;aacute;n ser contempladas como &lt;b&gt;hacer uso de los mismos controles SharePoint dentro de estos WebParts. &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;En ese sentido, debido a que sin problema alguno puedo utilizar el GridView y/o cualquier control ASP.NET al principio suena atractiva la posibilidad pero como siempre la realidad se asoma y nos muestra al que un d&amp;iacute;a fue novedoso control Calendar de ASP.NET y con todo el debido respeto, hoy no es la mejor opci&amp;oacute;n para la captura de una fecha dentro de una forma en SharePoint, al menos la mejor opci&amp;oacute;n es usar el mismo control que se usa en SharePoint, &amp;iquest;est&amp;aacute;s de acuerdo?&lt;/p&gt;
&lt;p&gt;Vamos a nuestro Web User Control y registramos los controles web de SharePoint. Estos son los controles mejorados que SharePoint internamente utiliza en su capa de presentaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6567.image_5F00_25598246.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6710.image_5F00_thumb_5F00_2F1E2817.png" border="0" height="188" width="1154" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Despu&amp;eacute;s dentro de nuestro c&amp;oacute;digo Markup agregamos el control SharePoint que requerimos:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5037.image_5F00_02F10559.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6457.image_5F00_thumb_5F00_71BD27B5.png" border="0" height="136" width="876" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Lo interesante es que tenemos una gama de controles de SharePoint disponibles.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1780.image_5F00_17B2D80C.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5327.image_5F00_thumb_5F00_7DDEA1DC.png" border="0" height="300" width="305" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n dentro del c&amp;oacute;digo hacemos referencia al control de SharePoint para poder adjuntar alg&amp;uacute;n evento o leer su valor. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7384.image_5F00_24408528.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6758.image_5F00_thumb_5F00_51FE2820.png" border="0" height="366" width="1081" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Y el resultado es:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5773.image_5F00_180EE534.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7230.image_5F00_thumb_5F00_7DCE7C0F.png" border="0" height="249" width="361" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Estos controles cuentan con validaciones, propiedades y eventos que podemos utilizar a nuestro favor. Cr&amp;eacute;ditos a Luis Edmundo Teos por el reto y escenario.&lt;/p&gt;
&lt;p&gt;Suerte!&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=198474" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+2.0/default.aspx">.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WebPart/default.aspx">WebPart</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2007/default.aspx">SharePoint 2007</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Soporte/default.aspx">Soporte</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS/default.aspx">WSS</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Practicas/default.aspx">Practicas</category></item><item><title>Cuantos ingenieros se necesitan para cambiar una bombilla o crear sitios SharePoint</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2011/03/31/cuantos-ingenieros-se-necesitan-para-cambiar-una-bombilla-o-crear-sitios-sharepoint.aspx</link><pubDate>Thu, 31 Mar 2011 19:50:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:191407</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=191407</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2011/03/31/cuantos-ingenieros-se-necesitan-para-cambiar-una-bombilla-o-crear-sitios-sharepoint.aspx#comments</comments><description>&lt;p&gt;No es curioso, es un hecho que en el ambiente laboral relacionado con tecnolog&amp;iacute;as de informaci&amp;oacute;n y seguramente en muchos otros, nos encontramos con diversas personalidades, temperamentos y arquetipos colaborando d&amp;iacute;a con d&amp;iacute;a para resolver alg&amp;uacute;n problema t&amp;eacute;cnico o de negocio. Las personas tenemos toda una historia distinta, adem&amp;aacute;s de cualidades que en parte de forma consiente o inconsciente constituye la forma muy particular de ver y reaccionar ante vida, en algunos casos estas cualidades son las adecuadas para ciertos escenarios pero que en definitiva en otros no lo son. &lt;/p&gt;
&lt;p&gt;Entonces la pregunta es, &amp;iquest;c&amp;oacute;mo aprovechar lo que cada quien aporta para generar valor empresarial?, esa es una pregunta que especialistas en Management, Leadership y Coaching podr&amp;iacute;an responder sin ning&amp;uacute;n problema. Sin embargo, desde mi &amp;oacute;ptica por lo menos &lt;strong&gt;compartir constantemente una visi&amp;oacute;n compartida con lineamientos claros&lt;/strong&gt; es esencial para organizar y aprovechar lo que cada persona con su historia histeria y experiencia aporta.&lt;/p&gt;
&lt;p&gt;En esta historia, el requerimiento es crear un conjunto finito de sitios con las siguientes caracter&amp;iacute;sticas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada sitio se basa en la plantilla de sitio de &lt;b&gt;Trabajo en Equipo&lt;/b&gt; &lt;/li&gt;
&lt;li&gt;Cada sitio no deber&amp;aacute; tener &lt;b&gt;herencia de permisos&lt;/b&gt; &lt;/li&gt;
&lt;li&gt;Cada sitio deber&amp;aacute; contar con 4 grupos &amp;ldquo;Owners, Visitors, Members, Permissions&amp;rdquo; bajo la nomenclatura &amp;ldquo;&lt;b&gt;Sitio + Nombre de grupo&lt;/b&gt;&amp;rdquo; &lt;/li&gt;
&lt;li&gt;Cada sitio cuenta con usuarios espec&amp;iacute;ficos para cada grupo. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que piensan los miembros del equipo de TI:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Miembro 1 - Vamos a lucirnos con la soluci&amp;oacute;n&lt;b&gt;, hagamos un WSP con feature receiver&lt;/b&gt; a nivel sitio web para que cuando le den activar en las caracter&amp;iacute;sticas del sitio, program&amp;aacute;ticamente los construya y configure. &lt;/li&gt;
&lt;li&gt;Miembro 2 &amp;ndash; &amp;iquest;Hay urgencia por parte del cliente como para dedicar tiempo a construir y probar un WSP?, &amp;iquest;se va a reutilizar la jerarqu&amp;iacute;a en alg&amp;uacute;n otro sitio en el futuro?, &amp;iquest;conviene dejar archivos en el 12 hive y un ensamblado en el GAC con full trust assembly?, &amp;iquest;vamos a implementar en DEV, QA, UAT y PROD el WSP? Yo digo que &lt;b&gt;construyamos los sitios manualmente&lt;/b&gt; usando el UI de SharePoint. &lt;/li&gt;
&lt;li&gt;Miembro 3 &amp;ndash; &lt;b&gt;Usemos scripts&lt;/b&gt; en un archivos *.bat que ejecute el comando stsadm.exe para crear los sitios y grupos, pasamos par&amp;aacute;metros e nivel comando y creamos un solo archivo que cuente con todas las instrucciones necesarias. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Despu&amp;eacute;s los miembros dan inicio a los argumentos t&amp;eacute;cnico-personales para defender su postura a capa y espada, &lt;span style="text-decoration:line-through;"&gt;como si fueran program managers de microsoft&lt;/span&gt;, correos electr&amp;oacute;nicos empiezan a fluir con preguntas que toman minutos leer y escribir de regreso para ser enviados de nuevo. El tiempo pasa, el tema sube de nivel, siguen estancados, el usuario pregunta por sus sitios y en eso Miembro 2 lo toma personal, sube de nivel su contestaci&amp;oacute;n y claudica ante su postura. Miembro 1 ratifica la postura de Miembro 2 con el af&amp;aacute;n de no afectar al equipo y Miembro 3 procede a ejecutar la postura del Miembro 2. &lt;b&gt;Tiempo total transcurrido 2.5 horas.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Si lo analizamos, todos pierden. El esp&amp;iacute;ritu del equipo se deteriora, definitivamente se ve mal y el usuario de plano esperando. Realmente cualquier postura es aceptable y totalmente factible, cada una con sus peculiaridades, estimaciones, esfuerzos y consecuencias. &lt;/p&gt;
&lt;p&gt;Dicho esto, tengo 2 preguntas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;iquest;C&amp;oacute;mo podr&amp;iacute;amos contextualizar las cosas para asegurar que antes de dar inicio a una soluci&amp;oacute;n construida por ingenieros, todos est&amp;eacute;n viendo hacia el mismo lugar? Esa es una respuesta que probablemente podamos encontrar aqu&amp;iacute; &lt;a href="http://www.crecenegocios.com/los-objetivos-de-una-empresa/"&gt;http://www.crecenegocios.com/los-objetivos-de-una-empresa/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&amp;iquest;Qu&amp;eacute; estrategia t&amp;eacute;cnica conviene utilizar para un escenario donde el resultado se requiere de inmediato? &lt;b&gt;A veces me pregunto si mi trabajo es preguntar&lt;/b&gt;, sin embargo haciendo un intento de posible respuesta, dejo algunos cuestionamientos respecto al escenario planteado y claro, su implementaci&amp;oacute;n. &lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Construyendo sitios de forma manual&lt;/h1&gt;
&lt;h2&gt;Pros&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;R&amp;aacute;pida ejecuci&amp;oacute;n usando UI de SharePoint &lt;/li&gt;
&lt;li&gt;Cero dependencia a c&amp;oacute;digo, ensamblado o XMLs, todo queda en la base de datos usando los site definitions y templates propietarios de SharePoint que si est&amp;aacute;n considerados para ser migrados y respaldados &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;No es repetible &lt;/li&gt;
&lt;li&gt;Requiere de intervenci&amp;oacute;n manual para replicar en cada ambiente y por lo tanto hay margen de error &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Implementaci&amp;oacute;n&lt;/h2&gt;
&lt;p&gt;Ubicados en el sitio en cuesti&amp;oacute;n accedemos a &lt;strong&gt;Acciones de sitio&lt;/strong&gt;, &lt;strong&gt;Configuraci&amp;oacute;n del sitio, Toda la configuraci&amp;oacute;n del sitio&lt;/strong&gt; y al de final las galer&amp;iacute;as elegimos &lt;strong&gt;crear sitios o &amp;aacute;rea de trabajo&lt;/strong&gt;. Especificamos el nombre, url y los siguientes puntos:&lt;/p&gt;
&lt;table width="400" cellpadding="2" cellspacing="2" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;&lt;strong&gt;Crear sitio&lt;/strong&gt;&lt;/td&gt;
&lt;td width="200" valign="top"&gt;&lt;strong&gt;Configurar grupos&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7573.image_5F00_3C44BF6E.png"&gt;&lt;img height="484" width="300" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2806.image_5F00_thumb_5F00_2FA6EC85.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="200" valign="top"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5554.image_5F00_7B629D71.png"&gt;&lt;img height="484" width="435" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7827.image_5F00_thumb_5F00_1ECF1C0A.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;Construyendo sitios program&amp;aacute;ticamente&lt;/h1&gt;
&lt;h2&gt;Pros&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Total portabilidad a m&amp;uacute;ltiples ambientes y sitios con m&amp;iacute;nimo esfuerzo de implementaci&amp;oacute;n &lt;/li&gt;
&lt;li&gt;Aprovisionamiento y des aprovisionamiento flexible de la funcionalidad y dependencias &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Crea una dependencia a un WSP, ensamblado en GAC y archivos en 12 hive &lt;/li&gt;
&lt;li&gt;Requiere de construcci&amp;oacute;n, pruebas, empaquetamiento y puesta en marcha en cada ambiente &lt;/li&gt;
&lt;li&gt;Pasa a control de versiones y gesti&amp;oacute;n &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Implementaci&amp;oacute;n&lt;/h2&gt;
&lt;p&gt;En este caso vemos que utilizamos una colecci&amp;oacute;n especial de tipo diccionario para almacenar la URL y Nombre del sitio que deseamos crear. Existen varias formas de hacer lo mismo, en este caso recorremos la colecci&amp;oacute;n de plantillas SharePoint para poder elegir la que usaremos &amp;ldquo;Team Sites&amp;rdquo;. Recorremos la colecci&amp;oacute;n de nuestro diccionario y utilizamos la colecci&amp;oacute;n Webs para agregar un nuevo site pasando los argumento recolectados, lo mas importante destacar en este punto es que el ultimo argumento false indica que no se mantiene la herencia y a continuaci&amp;oacute;n ya dentro del sitio rompemos la herencia, posteriormente recorremos el arreglo que tiene el nombre de los grupos que estaremos construyendo program&amp;aacute;ticamente, ese c&amp;oacute;digo se los debo y si alguien quiere compartirlo adelante.&lt;/p&gt;
&lt;pre class="csharpcode"&gt;           &lt;span style="font-family:Courier New;font-size:xx-small;"&gt;&lt;span class="kwrd"&gt;uint&lt;/span&gt;        lcid_english = 1033;
            &lt;span class="kwrd"&gt;string&lt;/span&gt;      siteUrl = &lt;span class="str"&gt;&amp;quot;http://portal.litwareinc.com&amp;quot;&lt;/span&gt;;
            &lt;span class="kwrd"&gt;string&lt;/span&gt;[]    groupTypeNames = {&lt;span class="str"&gt;&amp;quot;Owners&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;Members&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;Permissions&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;Visitors&amp;quot;&lt;/span&gt;};

            Dictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; targetSites = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();
            targetSites.Add(&lt;span class="str"&gt;&amp;quot;demo1&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Sitio de demostracion 1&amp;quot;&lt;/span&gt;);
            targetSites.Add(&lt;span class="str"&gt;&amp;quot;demo2&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Sitio de demostracion 2&amp;quot;&lt;/span&gt;);
            targetSites.Add(&lt;span class="str"&gt;&amp;quot;demo3&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Sitio de demostracion 3&amp;quot;&lt;/span&gt;);
                    
                &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPSite site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(siteUrl))
                {
                    SPWebTemplate siteTemplate = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
                    SPWebTemplateCollection templateCollection = site.GetWebTemplates(lcid_english);
                    
                    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (SPWebTemplate template &lt;span class="kwrd"&gt;in&lt;/span&gt; templateCollection)
                    {
                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (template.Title.Equals(&lt;span class="str"&gt;&amp;quot;Team Site&amp;quot;&lt;/span&gt;))
                        {
                            siteTemplate = template; 
                            &lt;span class="kwrd"&gt;break&lt;/span&gt;;
                        }
                    }

                    &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb())
                    {
                        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; siteInfo &lt;span class="kwrd"&gt;in&lt;/span&gt; targetSites)
                        {
                            &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPWeb newWeb = web.Webs.Add(&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;siteInfo.Key, &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;siteInfo.Value, &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty, &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;lcid_english, siteTemplate, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;))
                            {
                                newWeb.BreakRoleInheritance(&lt;span class="kwrd"&gt;false&lt;/span&gt;);
                                newWeb.Update();

                                &lt;span class="kwrd"&gt;foreach&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt; groupTypeName &lt;span class="kwrd"&gt;in&lt;/span&gt; groupTypeNames)
                                {
                                    &lt;span class="kwrd"&gt;string&lt;/span&gt; groupType = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;&amp;quot;{0} {1}&amp;quot;&lt;/span&gt;,siteInfo.Value,groupTypeName);
                                    
                                    &lt;span class="rem"&gt;// aqui deberas crear el grupo y asignar los permisos         &lt;/span&gt;
                                }                                                                  
                            }                            
                        }
                    }                
                }&lt;/span&gt; &lt;/pre&gt;
&lt;p&gt;

&lt;/p&gt;
&lt;h1&gt;Construyendo sitios con comandos stsadm.exe&lt;/h1&gt;
&lt;h2&gt;Pros&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Reutilizaci&amp;oacute;n moderada e intervenci&amp;oacute;n manual para especificar sites, groups que se aprovisionaran por los comandos &lt;/li&gt;
&lt;li&gt;F&amp;aacute;cil de corregir y reaccionar ante cualquier error &lt;/li&gt;
&lt;li&gt;La forma recomendada por Microsoft &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cons &lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Crea una dependencia al script que ejecuta los comandos de staadm.exe para la estructura solicitada &lt;/li&gt;
&lt;li&gt;Pasa a control de versiones y gesti&amp;oacute;n &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Implementaci&amp;oacute;n&lt;/h2&gt;
&lt;p&gt;En esta alternativa utilizamos las sentencias del comando stsadm.exe ubicado en c:\program files\common files\microsoft shared\web server extensions\12\bin especificando mediante &amp;ndash;o la opci&amp;oacute;n que deseamos y mediante los par&amp;aacute;metros especificamos lo que requerimos. Espec&amp;iacute;ficamente &amp;ndash;unique describe que no queremos heredar los permisos. Subrayo en rojo la parte donde especificamos el URL del sitio que estaremos creando. En este caso estamos creando un sitio llamado Sitio 1 y posteriormente creando cuatro grupos en donde los grupos Visitors y Members tienen como due&amp;ntilde;o al grupo Permissions.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;stsadm.exe -o createweb &amp;ndash;url &amp;quot;el url del sitio donde crearemos/&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;url del nuevo sitio&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;-lcid 1033 -sitetemplate STS#0&amp;nbsp; -title &amp;quot;Sitio 1&amp;quot; -description &amp;quot;&amp;quot; &amp;ndash;unique&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;stsadm.exe -o creategroup -url &amp;quot;el url del sitio donde aplicaremos&amp;quot;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt; -name &amp;quot;Sitio 1 Permissions&amp;quot; -description &amp;quot;Permissions of the site&amp;quot; -ownerlogin &amp;quot;administrator@litwareinc.com&amp;quot; -type &amp;quot;Owner&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;stsadm.exe -o creategroup -url &amp;quot;el url del sitio donde aplicaremos&amp;quot;&lt;/span&gt;&lt;a href="http://portal.litwareinc.com/2/&amp;quot;"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt; -name &amp;quot;Sitio 1 Owners&amp;quot; -description &amp;quot;Owners of the site&amp;quot; -ownerlogin &amp;quot;administrator@litwareinc.com&amp;quot; -type &amp;quot;Owner&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;stsadm.exe -o creategroup -url &amp;quot;el url del sitio donde aplicaremos&amp;quot;&lt;/span&gt;&lt;a href="http://portal.litwareinc.com/2/&amp;quot;"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt; -name &amp;quot;Sitio 1 Visitors&amp;quot; -description &amp;quot;Visitors of the site&amp;quot; -ownerlogin &amp;quot;Sitio 1 Permissions&amp;quot; -type &amp;quot;Visitor&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;stsadm.exe -o creategroup -url &amp;quot;el url del sitio donde aplicaremos&amp;quot;&lt;/span&gt;&lt;a href="http://portal.litwareinc.com/2/&amp;quot;"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt; -name &amp;quot;Sitio 1 Members&amp;quot; -description &amp;quot;Members of the site&amp;quot; -ownerlogin &amp;quot;Sitio 1 Permissions&amp;quot; -type &amp;quot;Member&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Personalmente en ocasiones he llegado a pensar, &amp;iquest;qu&amp;eacute; es mas complejo?, la tecnolog&amp;iacute;a o la psicolog&amp;iacute;a, en fin.&lt;/p&gt;
&lt;p&gt;&amp;iquest;Cu&amp;aacute;l es la mejor alternativa? Depende &lt;img src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8400.wlEmoticon_2D00_smile_5F00_2F86A0EB.png" alt="Sonrisa" class="wlEmoticon wlEmoticon-smile" style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" /&gt;&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=191407" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Vision/default.aspx">Vision</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2007/default.aspx">SharePoint 2007</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Trabajo+en+Equipo/default.aspx">Trabajo en Equipo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Issues/default.aspx">Issues</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Configuracion/default.aspx">Configuracion</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Soporte/default.aspx">Soporte</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Tecnicas/default.aspx">Tecnicas</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/stsadm/default.aspx">stsadm</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS/default.aspx">WSS</category></item><item><title>Desarrollo de WebParts de SharePoint 2010 con soporte AJAX</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2010/06/10/desarrollo-de-webparts-de-sharepoint-2010-con-soporte-ajax.aspx</link><pubDate>Thu, 10 Jun 2010 10:52:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:177897</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=177897</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2010/06/10/desarrollo-de-webparts-de-sharepoint-2010-con-soporte-ajax.aspx#comments</comments><description>&lt;p&gt;Microsoft no se cansa de dar el mensaje de que SharePoint 2010 es una plataforma de aplicación aparte de una plataforma de colaboración para la empresa y la web. Y el día de hoy quiero mostrar un breve y sencillo ejemplo de cómo construir un WebPart para SharePoint 2010 con soporte AJAX. &lt;/p&gt;  &lt;p&gt;Visual Studio 2010 por fin cuenta con un nuevo ciudadano de funcionalidad, se cuenta con toda una sección y plantillas de proyectos solo para la plataforma SharePoint 2010 soportada de forma nativamente y permitiendo a los programadores curiosos que no le temen al cambio adentrarse al mundo de desarrollo de SharePoint. &lt;/p&gt;  &lt;p&gt;Este video muestra lo simple que es construir e implementar un WebPart para SharePoint 2010 con características de AJAX. Cero líneas de código de configuración, arrastrar, soltar, doble clic y a programar es parte del paradigma con el que contamos en esta nueva versión. &lt;/p&gt;  &lt;div style="padding-bottom:0px;padding-left:0px;width:425px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:24d8cbfb-9186-4320-99b7-86b05fd92df6" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=8pnd-P-kMcQ&amp;amp;feature=youtube_gdata" target="_new"&gt;&lt;img src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7041.video602cd32403f0_5F00_3B4139C1.jpg" style="border-style:none;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Desde mi personal punto de vista no hay nada mejor que saber que sucede tras bambalinas sin embargo en este mundo donde la economía y las empresas constantemente cambian y por ende las herramientas que simplifican las cosas para solamente dedicarnos a lo que nos compete desde el punto de vista de negocio y no necesariamente a aquellas cosas de configuración que al negocio prácticamente le es indiferente. &lt;/p&gt;  &lt;p&gt;Aqui el video con mas resolucion:&lt;/p&gt; &lt;iframe style="padding-bottom:0px;background-color:#fcfcfc;padding-left:0px;width:98px;padding-right:0px;height:115px;padding-top:0px;" title="Preview" marginheight="0" src="http://cid-638d1988b3a07a11.office.live.com/embedicon.aspx/Public/haarongonzalez^_webparts^_ajax^_WMV.wmv" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=177897" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WebPart/default.aspx">WebPart</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/ASP.NET+2.0/default.aspx">ASP.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/ASP.NET+AJAX/default.aspx">ASP.NET AJAX</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+Framework++3.5/default.aspx">.NET Framework  3.5</category></item><item><title>Manipulación programática de archivos de Microsoft Project *.mpp con .NET</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2010/04/22/manipulaci-243-n-program-225-tica-de-archivos-de-microsoft-project-mpp-con-net.aspx</link><pubDate>Thu, 22 Apr 2010 18:20:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:175388</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=175388</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2010/04/22/manipulaci-243-n-program-225-tica-de-archivos-de-microsoft-project-mpp-con-net.aspx#comments</comments><description>&lt;p&gt;Si por alguna extraña razón cósmica en este mundo ultra moderno de la programación de software bajo plataforma .NET&amp;#160; te encuentras con la necesidad de manipular programáticamente archivos de Microsoft Office te recomiendo uses el proyecto open source &lt;a href="http://mpxj.sourceforge.net/getting-started.html" target="_blank"&gt;MPXJ&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;La biblioteca &lt;a href="http://mpxj.sourceforge.net/getting-started.html" target="_blank"&gt;MPXJ&lt;/a&gt; permite la lectura y escritura de diversos formatos de archivo de Microsoft Project usando un API en .NET o Java.&amp;#160; Estas API ofrecen clases que representan los componentes de un archivo de Project como Tareas, Recursos, Calendario, Asignaciones, etc. Y los métodos para poder acceder, operar y manipular dichos objetos.&lt;/p&gt;  &lt;p&gt;Estoy seguro que este modelo de objetos te permitirá darte una idea de cómo inter operar con Project desde tus aplicativos. En mi caso, con la ayuda de &lt;a href="http://twitter.com/Juankaram" target="_blank"&gt;@juankaram&lt;/a&gt; “que en definitiva fue estratégica su intervención”, tuvimos que integrar en SharePoint un WebPart lector de archivos de Project.&lt;/p&gt;  &lt;p&gt;El resultado:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/4606.landetrabajo_5F00_4F368DFE.jpg"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="landetrabajo" border="0" alt="landetrabajo" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8400.landetrabajo_5F00_thumb_5F00_3B0D4BA8.jpg" width="723" height="772" /&gt;&lt;/a&gt;&lt;/p&gt;
Originalmente publicado en msmvps.com&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=175388" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Office/default.aspx">Office</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/.NET+2.0/default.aspx">.NET 2.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/WebPart/default.aspx">WebPart</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2007/default.aspx">SharePoint 2007</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/DevExpress/default.aspx">DevExpress</category></item><item><title>Como consumir lista de SharePoint 2010 en Windows Forms mediante REST</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2010/02/19/como-consumir-lista-de-sharepoint-2010-en-windows-forms-mediante-rest.aspx</link><pubDate>Fri, 19 Feb 2010 21:19:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:167802</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=167802</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2010/02/19/como-consumir-lista-de-sharepoint-2010-en-windows-forms-mediante-rest.aspx#comments</comments><description>&lt;p&gt;En Microsoft uno de los puntos que se enorgullecen de divulgar es que ahora se soporta REST para acceso a listas y bibliotecas de documentos lo cual me parece fant&amp;aacute;stico ya que si aporta valor la alternativa de obtener acceso directo al contenido basado en un est&amp;aacute;ndar y que sin tanto esfuerzo de programacion lo podamos lograr es tambien un tema a consiuderar. Este seguro que desde ya podemos ver muchas aplicaciones de esta caracter&amp;iacute;stica en proyectos de desarrollo SharePoint. &lt;/p&gt;
&lt;p&gt;Hagamos una breve y simple demostraci&amp;oacute;n de c&amp;oacute;mo consumir un servicio REST de SharePoint en una aplicacion Windows Forms. &lt;/p&gt;
&lt;h2&gt;Soporte REST en SharePoint 2010&lt;/h2&gt;
&lt;p&gt;Primeramente accedemos a nuestro sitio SharePoint 2010 y en la direcci&amp;oacute;n URL hay que capturar &amp;ldquo;_vtn_bin/listdata.svc&amp;quot; el cual es un servicio WCF que se encarga de exponer el sitio entero en formato REST. Dependiendo del URL de nuestro sitio es el contenido que el servicio listdata.svc nos retorna. &lt;/p&gt;
&lt;p&gt;Como puedes ver aqu&amp;iacute; tenemos en formato REST el contenido del sitio.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7853.clip_5F00_image002_5F00_579FB7B3.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image002" alt="clip_image002" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2260.clip_5F00_image002_5F00_thumb_5F00_5C41D43B.jpg" width="644" border="0" height="349" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mediante la URL indagamos y accedemos a los sub elementos de este esquema, por ejemplo si quisi&amp;eacute;ramos acceder a la lista de anuncios &amp;ldquo;Announcements&amp;rdquo; entonces modificamos el URL y capturamos subsecuentemente &lt;a href="http://sp210-pdc/_vti_bin/listdata.svc/Announcements"&gt;/_vti_bin/listdata.svc/Announcements&lt;/a&gt; arrojando lo siguiente:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0116.clip_5F00_image004_5F00_6672AD01.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image004" alt="clip_image004" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1104.clip_5F00_image004_5F00_thumb_5F00_6B64C4E3.jpg" width="644" border="0" height="349" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El navegador lo interpreta y muestra como un Feed RSS sin embargo al ver el c&amp;oacute;digo fuente de esta p&amp;aacute;gina vemos m&amp;aacute;s contenido de acuerdo a REST. Encontramos un esquema mucho mas explicito que describe y autocontiene la informacion invocada.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6303.clip_5F00_image006_5F00_684B0097.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image006" alt="clip_image006" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0511.clip_5F00_image006_5F00_thumb_5F00_33E665EA.jpg" width="644" border="0" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lo &amp;uacute;nico que debes de saber es que la direcci&amp;oacute;n URL es sensible a may&amp;uacute;sculas y min&amp;uacute;sculas de tal forma que debes de asegurarte de especificar exactamente igual el nombre de las listas y bibliotecas, no hay margen para el error aqu&amp;iacute;.&lt;/p&gt;
&lt;h2&gt;Consumiendo Servicio REST de SharePoint 2010&lt;/h2&gt;
&lt;p&gt;Debido a que REST opera via protocolo web podemos consumirlo tal como un servicio web. Desde Visual Studio 2010 creamos una aplicaci&amp;oacute;n de consola o Windows Forms y tenemos varias alternativas disponibles para generar un proxy que nos invoque los elementos que tenemos publicados por defecto en REST mediante el servicio listdata.svc. En esta demostraci&amp;oacute;n de tipo aplicaci&amp;oacute;n Windows Forms simplemente selecciono del men&amp;uacute; principal la opci&amp;oacute;n de Data en donde se muestra la opci&amp;oacute;n de Visual Studio para agregar una conexi&amp;oacute;n que apunte a diversos or&amp;iacute;genes de datos. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/3755.clip_5F00_image007_5F00_2CA6DDD8.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image007" alt="clip_image007" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/1018.clip_5F00_image007_5F00_thumb_5F00_739C12A3.png" width="244" border="0" height="130" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lo que vale la pena ver aqu&amp;iacute; es que ahora contamos con un nuevo conector hacia SharePoint.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8546.clip_5F00_image009_5F00_27FC9952.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image009" alt="clip_image009" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7853.clip_5F00_image009_5F00_thumb_5F00_22312FB0.jpg" width="628" border="0" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A seleccionar Next simplemente se carga la ventana para hacer una referencia a un servicio WCF. Capturamos la URL de nuestro servicio listdata.svc de nuestro sitio SharePoint en cuesti&amp;oacute;n y damos clic en el bot&amp;oacute;n Go, para que Visual Studio descubra el contenido del servicio &amp;ldquo;el cual basado en REST obtendremos el contenido de nuestro sitio&amp;rdquo; y especificamos el namespace con el que estaremos haciendo referencia a nuestro proxy.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2273.clip_5F00_image010_5F00_7C49A34B.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image010" alt="clip_image010" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7776.clip_5F00_image010_5F00_thumb_5F00_2C7E505A.png" width="598" border="0" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Damos clic en Ok y listo ya podemos generar instancias de nuestro proxy y realizar program&amp;aacute;ticamente invocaciones al contenido de nuestras listas. Cabe mencionar que al hacer la conexi&amp;oacute;n v&amp;iacute;a Data Source de Visual Studio nos agrega una secci&amp;oacute;n donde podemos arrastrar y soltar sobre nuestra lista de anuncios present&amp;aacute;ndonos las columnas y la posibilidad de mostrar los objetos sobre nuestro formulario, el proceso de vinculaci&amp;oacute;n lo realiza de forma autom&amp;aacute;tica y nos agrega el contexto de vinculaci&amp;oacute;n y el contexto de navegaci&amp;oacute;n dentro de un conjunto de datos.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2063.clip_5F00_image011_5F00_4687D182.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image011" alt="clip_image011" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2063.clip_5F00_image011_5F00_thumb_5F00_0CE85FC1.png" width="597" border="0" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si tomamos nuestra lista de anuncios y la arrastramos y soltamos sobre nuestro formulario el resultado ser&amp;aacute; un datagrid con su correspondiente objeto de navegaci&amp;oacute;n y contexto de vinculaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5810.clip_5F00_image013_5F00_623C5916.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="clip_image013" alt="clip_image013" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/6886.clip_5F00_image013_5F00_thumb_5F00_7B28038E.jpg" width="644" border="0" height="447" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Claro que nosotros podemos editar que columnas queremos incluir y atrapar eventos dentro del datagrid para determinar renglones nuevos o editados y program&amp;aacute;ticamente hacer algo al respecto.&lt;/p&gt;
&lt;p&gt;Ya para terminar necesitamos realizar desde c&amp;oacute;digo la invocaci&amp;oacute;n a nuestra lista y pasarle como contexto de datos el resultado de nuestro servicio. As&amp;iacute; mismo ocupamos tambi&amp;eacute;n pasar el contexto de usuario para que podamos tener acceso seguro a SharePoint.&lt;/p&gt;
&lt;p&gt;Lo que hay que hacer es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Hacer referencia a nuestro namespace RESTDemo y a System.Net usando using &lt;/li&gt;
&lt;li&gt;Instanciamos nuestro servicio generado por el proxy llamado &amp;ldquo;HomeDataContext&amp;rdquo; y pasamos como argumento dentro del constructor un objeto Uri apuntando a nuestro servicio listdata.svc. &lt;/li&gt;
&lt;li&gt;A nuestro objeto instanciado necesitamos asignarle la credenciales de usuario con las que se autentificara en SharePoint para consumir los datos. &lt;/li&gt;
&lt;li&gt;Asignamos a nuestro objeto de contexto de vinculaci&amp;oacute;n en su propiedad DataSource el resultado de nuestra lista. &lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Net;
&lt;span class="kwrd"&gt;using&lt;/span&gt; WindowsFormsApplication9.RESTDemo;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; WindowsFormsApplication9
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Form1 : Form
    {

        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Form1_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)
        {
            HomeDataContext dc = &lt;span class="kwrd"&gt;new&lt;/span&gt; HomeDataContext(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;http://sp210-pdc/_vti_bin/listdata.svc&amp;quot;&lt;/span&gt;));
            dc.Credentials = CredentialCache.DefaultNetworkCredentials;
            announcementsBindingSource.DataSource = dc.Announcements;
        }
    }
}&lt;/pre&gt;
&lt;p&gt;El resultado:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2273.image_5F00_67A6B5BB.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" alt="image" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/0116.image_5F00_thumb_5F00_07EE1FE1.png" width="644" border="0" height="239" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
Originalmente publicado en msmvps.com&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167802" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Demo/default.aspx">Demo</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SPS+2010/default.aspx">SPS 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SFS+2010/default.aspx">SFS 2010</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>Impersonation en una WebPart de SharePoint 2007 para insertar programaticamente en una lista personalizada</title><link>http://geeks.ms/blogs/haarongonzalez/archive/2007/10/05/impersonation-en-una-webpart-de-sharepoint-2007-para-insertar-programaticamente-en-una-lista-personalizada.aspx</link><pubDate>Sat, 06 Oct 2007 01:43:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:39977</guid><dc:creator>Haaron Gonzalez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/haarongonzalez/rsscomments.aspx?PostID=39977</wfw:commentRss><comments>http://geeks.ms/blogs/haarongonzalez/archive/2007/10/05/impersonation-en-una-webpart-de-sharepoint-2007-para-insertar-programaticamente-en-una-lista-personalizada.aspx#comments</comments><description>&lt;p&gt;No hace mucho tuve que desarrollar una WebPart para inserta programáticamente elementos sobre una lista personalizada de SharePoint. EL ambiente sobre el que estaba corriendo mi aplicación web era de un sitio SharePoint de publicación para internet con autentificación por formularios habilitada y acceso anónimo soportado. Cuando se ejecutaba mi código&amp;nbsp; me mandaba a una página de denegación de acceso debido a credenciales no validas. Por supuesto que esto es un escenario donde se requiere &lt;b&gt;“Impersonation”&lt;/b&gt;.  &lt;p&gt;A continuación dejo una de las tantas opciones disponibles en código para lograr “&lt;b&gt;Impersonation”&lt;/b&gt; en una WebPart de SharePoint 2007.&lt;pre class="csharpcode"&gt;SPSecurity.RunWithElevatedPrivileges(&lt;span class="kwrd"&gt;delegate&lt;/span&gt;()
          {

              &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPSite s = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(siteUrl))
              {
                
                  SPWeb w = s.OpenWeb();
                  w.AllowUnsafeUpdates = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
                  w.Update();

                  SPList myList = w.Lists[listName];

                  SPListItem &lt;span class="kwrd"&gt;new&lt;/span&gt; = myList.Items.Add();
                  &lt;span class="kwrd"&gt;new&lt;/span&gt;[&lt;span class="str"&gt;&amp;quot;field1&amp;quot;&lt;/span&gt;] = txtField1.Text;
                  &lt;span class="kwrd"&gt;new&lt;/span&gt;[&lt;span class="str"&gt;&amp;quot;field2&amp;quot;&lt;/span&gt;] = txtField2.Text;
                  &lt;span class="kwrd"&gt;new&lt;/span&gt;[&lt;span class="str"&gt;&amp;quot;field3&amp;quot;&lt;/span&gt;] = &lt;span class="kwrd"&gt;this&lt;/span&gt;.Page.Request.Url.ToString();
                  &lt;span class="kwrd"&gt;new&lt;/span&gt;[&lt;span class="str"&gt;&amp;quot;field4&amp;quot;&lt;/span&gt;] = txtField3.Text.ToString();

                  &lt;span class="kwrd"&gt;new&lt;/span&gt;.Update();
              }


          });
&lt;/pre&gt;
&lt;p&gt;Este fue el code del dia. Saludos
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=39977" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/Code/default.aspx">Code</category><category domain="http://geeks.ms/blogs/haarongonzalez/archive/tags/C_2300_/default.aspx">C#</category></item></channel></rss>