Hola !
Aquí les dejo unos enlaces sobre varios recursos que nos serán de mucha ayuda para actualizarnos y en otros casos incursionar en el desarrollo con SP2010.
Hola !
Aquí les dejo unos enlaces sobre varios recursos que nos serán de mucha ayuda para actualizarnos y en otros casos incursionar en el desarrollo con SP2010.
En muchas ocasiones nos hemos topado con la necesidad de obtener el conjunto de elementos de una lista de SharePoint. El cual tiene una coleccion de items SPListItemCollecction, así como columnas SPFieldCollection.
Si nosotros creamos una lista en la cual vamos a necesitar alguna columna que obtenga sus valores de otra lista . ejm Tipologias, Ciudades, Departamentos, etc. Tendremos que crear un campo a nuestra lista tipo lookup colum (En el cual podemos escoger la lista y el campo que deseamos buscar).
* Aunque en MOSS 2007 no soporta aún campos lookup según alguna condicional, ya que siempre trae “all items” de la lista padre.
*Una mejora para MOSS 2010 en los lookup column es que ahora soportan borrado en cascada de los datos relacionados, véanlo en el post SharePoint 2010 What’s New – Lookup Columns #SPC09.
Vamos al escenario.
Tenemos una lista personalizada de cursos, el cual tiene 2 campos lookup (Tipo de curso, Categoria de curso) y 1 campo tipo persona (Usuario destino).
Para obtener los datos de la lista podemos utilizar el siguiente código:
1 |
<span style="color:#606060" id="lnum1"> 1:</span> <span style="color:#0000ff">using</span> (SPSite mySite = <span style="color:#0000ff">new</span> SPSite(<span style="color:#006080">"http://spvm"</span>)) { |
1 |
<span style="color:#606060" id="lnum2"> 2:</span> SPWeb myWeb = mySite.OpenWeb(); |
1 |
<span style="color:#606060" id="lnum3"> 3:</span> SPList myList = myWeb.Lists[<span style="color:#006080">"Cursos"</span>]; |
1 |
<span style="color:#606060" id="lnum4"> 4:</span> <span style="color:#0000ff">foreach</span> (SPListItem item <span style="color:#0000ff">in</span> myList.Items) |
1 |
<span style="color:#606060" id="lnum5"> 5:</span> { |
1 |
<span style="color:#606060" id="lnum6"> 6:</span> Console.WriteLine(<span style="color:#006080">"Item => "</span> + item.ID + <span style="color:#006080">"n"</span>); |
1 |
<span style="color:#606060" id="lnum7"> 7:</span> Console.WriteLine(item[<span style="color:#006080">"Title"</span>].ToString()); |
1 |
<span style="color:#606060" id="lnum8"> 8:</span> Console.WriteLine(item[<span style="color:#006080">"Tipo_x0020_de_x0020_curso"</span>].ToString()); |
1 |
<span style="color:#606060" id="lnum9"> 9:</span> Console.WriteLine(item[<span style="color:#006080">"Categoria_x0020_de_x0020_curso"</span>].ToString()); |
1 |
<span style="color:#606060" id="lnum10"> 10:</span> Console.WriteLine(item[<span style="color:#006080">"Usuario"</span>].ToString()); |
1 |
<span style="color:#606060" id="lnum11"> 11:</span> Console.WriteLine(<span style="color:#006080">"nn"</span>); |
1 |
<span style="color:#606060" id="lnum12"> 12:</span> } |
1 |
<span style="color:#606060" id="lnum13"> 13:</span> Console.ReadLine(); |
1 |
<span style="color:#606060" id="lnum14"> 14:</span> }; |
Y el resultado que muestra:
Como vemos en los campos lookup y user no muestra con el siguiente formato.
1;#Virtual => ID;#Valor
Si en nuestra código quisieramos preguntar por algún valor como por ejemplo “Obtener los cursos virtuales y del usuario Administrator”. Tal vez escribamos el siguiente código.
1 |
<span style="color:#606060" id="lnum1"> 1:</span> _tipoCurso= item[<span style="color:#006080">"Tipo_x0020_de_x0020_curso"</span>].ToString(); |
1 |
<span style="color:#606060" id="lnum2"> 2:</span> _userName = item[<span style="color:#006080">"Tipo_x0020_de_x0020_curso"</span>].ToString(); |
1 |
<span style="color:#606060" id="lnum3"> 3:</span>  |
1 |
<span style="color:#606060" id="lnum4"> 4:</span> <span style="color:#0000ff">if</span> (_tipoCurso.Equals(<span style="color:#006080">"Virtual"</span>) && _userName.Equals(<span style="color:#006080">"Administrator"</span>)){ |
1 |
<span style="color:#606060" id="lnum5"> 5:</span> <span style="color:#008000">//codigo anterior</span> |
1 |
<span style="color:#606060" id="lnum6"> 6:</span> } |
Esto NO obtendrá ningún resultado. ya que los valores en formato string de la variable _tipoCurso=”1;#Virtual” y de la variable _userName=”1;#SPVMAdministrator”.
Es en donde ingresa las clases:
SPField => Que representa una columna en una lista.
SPFieldLookup => Representa una columna tipo lookup en SharePoint.
SPFieldLookupValue => Representa los posibles valores del campo lookup.
SPFieldUserValue => Representa el valor de un campo tipo usuario en SharePoint.
Modificando nuestro código para poder obtener los valores de nuestros campos lookup y campo usuario, quedaría de la siguiente manera.
1 |
<span style="color:#606060" id="lnum1"> 1:</span> <span style="color:#0000ff">using</span> (SPSite mySite = <span style="color:#0000ff">new</span> SPSite(<span style="color:#006080">"http://spvm"</span>)) { |
1 |
<span style="color:#606060" id="lnum2"> 2:</span> SPWeb myWeb = mySite.OpenWeb(); |
1 |
<span style="color:#606060" id="lnum3"> 3:</span> SPList myList = myWeb.Lists[<span style="color:#006080">"Cursos"</span>]; |
1 |
<span style="color:#606060" id="lnum4"> 4:</span> <span style="color:#0000ff">foreach</span> (SPListItem item <span style="color:#0000ff">in</span> myList.Items) |
1 |
<span style="color:#606060" id="lnum5"> 5:</span> { |
1 |
<span style="color:#606060" id="lnum6"> 6:</span> _tipoCurso= item[<span style="color:#006080">"Tipo_x0020_de_x0020_curso"</span>].ToString(); |
1 |
<span style="color:#606060" id="lnum7"> 7:</span> _userName = item[<span style="color:#006080">"Usuario"</span>].ToString(); |
1 |
<span style="color:#606060" id="lnum8"> 8:</span>  |
1 |
<span style="color:#606060" id="lnum9"> 9:</span> SPFieldLookupValue valueTipoCurso = |
1 |
<span style="color:#606060" id="lnum10"> 10:</span> (SPFieldLookupValue) item.Fields[<span style="color:#006080">"Tipo de curso"</span>].GetFieldValue(_tipoCurso); |
1 |
<span style="color:#606060" id="lnum11"> 11:</span> SPFieldUserValue valueUserName = |
1 |
<span style="color:#606060" id="lnum12"> 12:</span> (SPFieldUserValue) item.Fields[<span style="color:#006080">"Usuario"</span>].GetFieldValue(_userName); |
1 |
<span style="color:#606060" id="lnum13"> 13:</span>  |
1 |
<span style="color:#606060" id="lnum14"> 14:</span> <span style="color:#0000ff">if</span> (valueTipoCurso.LookupValue.Equals(<span style="color:#006080">"Virtual"</span>) && valueUserName.User.LoginName.Equals(<span style="color:#006080">"Administrator"</span>)){ |
1 |
<span style="color:#606060" id="lnum15"> 15:</span> <span style="color:#008000">//codigo anterior</span> |
1 |
<span style="color:#606060" id="lnum16"> 16:</span> } |
1 |
<span style="color:#606060" id="lnum17"> 17:</span> |
1 |
<span style="color:#606060" id="lnum18"> 18:</span> } |
1 |
<span style="color:#606060" id="lnum19"> 19:</span> Console.ReadLine(); |
1 |
<span style="color:#606060" id="lnum20"> 20:</span> }; |
Y con este código ahora si podemos obtener los valores de nuestros campos lookup y obtener el campo usuario como un campo SPUser.
Espero les haya sido de utilidad.
Nos vemos pronto.
Alaos !
Algo con que me acabo de chocar en el actual proyecto donde me encuentro “E learning para la Academia Movistar” para Telefónica Móbiles.
En mi empresa actual cuento con un ambiente de desarrollo el cual consta de un servidor con Windows Server 2008, en el cual tengo un ambiente Hyper V , y 2 servidores virtuales.
En este último se encuentra instalado el MOSS 2007 , SP Designer 2007 y Visual Studio 2008.
Tenemos como algunos requerimientos crear WorkFlows sobre SharePoint para lo cual debemos instalar las Extensiones de WSS 3.0 para Visual Studio 2008 .
Al intentarlo instalar nos dio el siguiente error :
Investigando por la web, encontré varios artículos sobre este punto, en los cuales se puede ver que muchos partners de ms, como en este caso el mío, se encuentran con este problema. (De no poder utilizar estas extensiones en nuestro ambiente actual de desarrollo).
Obviamente he visto mucho que en estos últimos meses se ha impulsado mucho la implementación de Windows Server 2008, pero también creo que deben de tomar en cuenta estos aspectos de equipo de trabajo en sharepoint que no van a poder utilizar las extensiones en ambientes de 64 bits!!!.
A raíz de esto solo nos queda o encontrar alguna solución o algún extensión de SP para desarrollo en 64 Bits, lo cual no he encontrado por parte de ms. Lo mas rápido que podemos hacer es volver a nuestro entorno de Windows Server 2003 en 32 bits.
Pero por qué no podemos instalar las extensiones de WSS 3.0 en plataformas 64 bits ??.
Aquí les dejo un artículo muy interesante en donde dan respuestas a esta problemática.
Pero esperen!!! ahora el CTP de VSeWSS 1.3 viene con soporte para 64 Bit, pero lo cual es un desarrollo incremental hasta el lanzamiento de Visual Studio 2010, es por eso también que no lo puedo utilizar, pero es una buena noticia a futuro 🙂
Espero les haya servido de utilidad, asi como los los enlaces de interés !!!
alaos …