Reordenar Columnas de Sitio en Tipos de Contenido

En la siguiente entrada vamos a ver cómo realizar una carga masiva para ordenar columnas de sitio (SPFieldLinks) en diferentes tipos de contenido (SPContentType) con una carga masiva. La ordenación de columnas se nos permite por la interfaz, y nos influye en el orden en que las columnas se muestran en los formularios de SharePoint.

Así se nos presenta esta opción por la interfaz de SharePoint 2010.

reorder-fields-iu

 

Un usuario con permiso de administración de listas puede realizar esta operación, pero si nos surge la necesidad de hacerlo de forma automática, y como carga masiva, también podemos hacerlo por código.

Para ello, primero vamos a crear un fichero de texto (*.txt) en nuestro Visual Studio para cada tipo de contenido de la lista. Un ejemplo

reorder-fields-files

Cada fichero será de este tipo:

reorder-fields-fields-to-reorder

Podemos ver que pongo los Display Name de las columnas… de este modo será más fácil si esta información nos viene por parte de los usuarios que pueden desconocer los InternalName de los SPField.

 

Leer fichero que se encuentra en el proyecto:

Con la siguiente función podremos leer cualquier fichero que creemos en nuestro proyecto de Visual Studio pasando la ruta del fichero como parámetro: {Nombre del Proyecto}.{Carpeta}.{SubCarpeta}.{Nombre}.txt

 

Reordenar columnas

A continuación, leeremos cada fichero, dentro de cada fichero separaremos por cada línea, y a su vez por la estructura {Display Name de la Columna}#{Posición que adoptará}

 

Puntos clave

  1. En primer lugar, obtener la lista (línea 7).
  2. Para cada tipo de contenido, obtener un fichero con mismo nombre que el tipo de contenido (línea 20).
  3. Hacer uso de un SortedDictionary (línea 33). Éste nos permite introducir datos en un diccionario tipo <Key, Value> y que se nos reordenen los datos por su clave según los introduzcamos.
  4. Tras ello, una vez tengamos el diccionario completo realizaremos una copia a un string[] que es lo que espera el método SPFieldLinkCollection.Reorder (líneas 64 y 65).

 

Como pasa en todos los snippets, obviamente, el nombre de la lista a utilizar, los tipos de contenido, vuestra forma de trazar el código, etc… serán los que necesitemos, pero creo que podréis adoptarlo fácilmente a vuestra necesidad. Enjoy!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.