Te esperamos en el Tour Tecnologico 2007

Desde el pasado MVP Round Table entre tantas cosas vimos la iniciativa “Tour Tecnológico 2007” y por fin ya es oficial. Se trata de la gira que normalmente Microsoft México organiza cada año para divulgar todo lo nuevo. Interesado? Dense la oportunidad de asistir, son bastantes ciudades y el contenido esta excelente. Igual que el año pasado puedes votar por los temas, hay premios e incluso puedes solicitar que este evento se lleve en tu ciudad. Imagina la posibilidad de que expertos en tecnologías Microsoft compartan en tu misma localidad lo nuevo y que tú mi amigo hallas sido el de la idea.

image 

Felicitaciones al equipo de DPE de la subsidiaria de Microsoft en México por el trabajo que han venido realizando, esperamos tocar a muchas gente este año pero sobre todo influir positivamente en su desarrollo.

Saludos!

Autentificacion Windows Live para SharePoint

Con la novedad de que ya podemos implementar autentificacion Windows Live para sitios SharePoint. Una vez mas, gracias a la arquitectura de construccion de ASP.NET podemos integrar un escenario de autentificacion basado en Windows Live con SharePoint ya que simplemente se contruyo un proveedor de credenciales (Membership Provider) que esta dosponible aqui:

Impersonation en una WebPart de SharePoint 2007 para insertar programaticamente en una lista personalizada

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  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 “Impersonation”.

A continuación dejo una de las tantas opciones disponibles en código para lograr “Impersonation” en una WebPart de SharePoint 2007.

SPSecurity.RunWithElevatedPrivileges(delegate()
          {

              using (SPSite s = new SPSite(siteUrl))
              {
                
                  SPWeb w = s.OpenWeb();
                  w.AllowUnsafeUpdates = true;
                  w.Update();

                  SPList myList = w.Lists[listName];

                  SPListItem new = myList.Items.Add();
                  new["field1"] = txtField1.Text;
                  new["field2"] = txtField2.Text;
                  new["field3"] = this.Page.Request.Url.ToString();
                  new["field4"] = txtField3.Text.ToString();

                  new.Update();
              }


          });

Este fue el code del dia. Saludos

Codigo de la biblioteca de clases base para su consulta

Como ven, el código fuente de .NET ha sido liberado. De acuerdo a lo publicado en este post en el blog de Scott Guthrie nos comenta que algunos espacios de nombres de la biblioteca de clases base ha sido destapados para poder visualizar su funcionalidad interna. Cabe mencionar que este código es solo para referencia y no podrá ser compilado. Se planea también poner a disposición el código de WF, WPF y WCF.

Interesante estrategia, personalmente creo que para algunos esta es una gran noticia y para otros la oportunidad de adentrarse a lo internos de .NET. Solo imagina la posibilidad de hacer depuración mucho más detallada e interna.

Vale la pena estar al pendiente. En la siguiente imagen publicada en el blog de Shawn Burke’s Blog nos comenta los pasos que tendrán que suceder para poder visualizar el código fuente.

 


SPSiteDataQuery que belleza!

Hay ocasiones donde requerimos realizar consultas internas de información que van más allá de consultar una simple lista o biblioteca de documentos en un mismo nivel de sitio. SPSiteDataQuery es una belleza disponible en el modelo de objetos de SharePoint v3 que nos permite realizar búsquedas de información entre múltiples listas y sitios de una misma colección de sitios. La clase SPQuery realiza la consulta a un solo nivel de un sitio y regresa una colección de tipo SPListItemCollection sin embargo, SPSiteDataQuery puede realizar la misma consulta en los distintos subsitios y listas de una misma colección de sitios regresando el resultado en una sola respuesta y por si fuera poco, en un objeto de tipo DataTable de ADO.NET. 

Veamos el siguiente código:

SPSiteDataQuery q = new SPSiteDataQuery();
q.ViewFields = “<FieldRef Name=’columna1′ /><FieldRef Name=’columna2′ />”; // campos que queremos obtener
q.Lists = “<Lists BaseType=’1’/>”; // tipo de objeto donde queremos buscar. GenericList = 0, DocumentLibrary = 1, DiscussionForum = 3, VoteOfSurvey = 4, IssueList = 5
q.Webs = “<Webs Scope=’SiteCollection’ />”; // alcance de la busqueda
q.Query = “<Where><Eq><FieldRef Name=’columna3′ /><Value Type=’Text’>xxx</Value></Eq></Where>”; // query CAML

DataTable dt = null;
using (SPSite s = new SPSite(siteUrl))
{
SPWeb w = s.OpenWeb();
dt = w.GetSiteData(q);
w = null;
}

foreach (DataRow dr in dt.Rows)
{
var1 = Convert.ToInt32(dr[“columna1”].ToString());
var2 = Convert.ToInt32(dr[1].ToString());
}
 

Una recomendacion final es no abusar de SPSiteDataQuery para realizar todo tipo de consultas, 
recuerda que SPSiteDataQuery realiza la consulta en toda una coleccion de sitio, si solamente 
requieres buscar sobre un mismo nivel de sitio es mucho mas recomendable utiliza SPQuery.