Mostrando entradas con la etiqueta Fields. Mostrar todas las entradas
Mostrando entradas con la etiqueta Fields. Mostrar todas las entradas

martes, 15 de julio de 2008

Función Javascript para acceder a los campos de un formulario SharePoint

A veces es necesario editar los formularios, master pages, page layouts, etc. de SharePoint y para realizar alguna operación en ellos. Si este es el caso y lo que se necesita es acceder a algún campo de un formulario de SharePoint mediante javascript, basta con utilizar esta función:

function getTagFromIdentifierAndTitle(tagName, identifier, title) {
var len = identifier.length;
var tags = document.getElementsByTagName(tagName);

for (var i=0; i <>
var tempString = tags[i].id;
if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
return tags[i];
}
}
return null;
}

Llamando a esta función, indicando el tipo de tag que queremos recoger, su id y su título obtendremos el objeto y podremos realizar las operaciones necesarias sobre él, mediante Javascript.

Por ejemplo, supongamos que tenemos una textarea en un formulario, la cual queremos ocultar mediante javascript:
<textarea title="dataInicial" id="dataIni" name="TextArea1" cols="20" rows="2"></textarea>
para obtener el objeto textarea tendremos que llamar a getTagFromIdentifierAndTitle de la siguiente manera:
var textAreaDataIni = getTagFromIdentifierAndTitle("textarea", "dataIni", "dataInicial");
y para hacer que no se muestre:
textAreaDataIni.style.display = "none";

Más información aquí.

Espero que os sirva de ayuda!

sábado, 31 de mayo de 2008

Campos que no aparecen en custom layouts de SharePoint Designer

Estos días un compañero de Raona se encontró con un problema, estaba haciendo un custom layout con SharePoint Designer pero algunos de los campos no se dibujaban, sin seguir ninguna lógica aparente.

Después de darle un par de vueltas, nos dimos cuenta de que el problema está en los nombres que utiliza SharePoint Designer, ya que se limita a codificar el nombre del campo por completo (que debe corresponder con el InternalName del campo) pero el Internal Name tiene una longitud limitada a 32 caracteres que se puede ver desbordada por la sustitución de los espacios y caracteres extraños por la codificación del tipo _x0020_

Conclusión: con una pequeña aplicación de consola que te extraiga el InternalName del campo podrás solucionar esta situación, corrigiéndolo luego en SharePoint Designer:
SPSite site = new SPSite("http://miservidor");
SPWeb web = site.OpenWeb();
SPList list = web.Lists["nombreLista"];
SPField fld = list.Fields["campo"];
System.Console.WriteLine(InternalName: + "fld.InternalName");

domingo, 27 de abril de 2008

Ocultar campos en SharePoint 2007

Una de las cosas que se echa de menos en MOSS 2007 es la no existencia de seguridad a nivel de campo (Field) pero, al menos, existe la posibilidad de decidir si un campo se muestra o no en los formularios de las listas.

Para ello disponemos de una serie de atributos que definen si un campo debe ser visible en los formularios de New, Edit, Display y en el historial de versiones, aunque no son modificables a través de SharePoint directamente, sino que deberemos recurrir a la API.

Supongamos que queremos ocultar el campo "nombreCampo" de la lista "nombreLista" a los usuarios lectores pero que siendo posible editar su contenido, el código sería como sigue:

//Creamos el site

SPsite site = new SPSite("http://miservidor");


//Abrimos el objeto web

SPWeb web = site.OpenWeb();

//Cogemos la lista en la que queramos ocultar los campos
SPList list = web.Lists["nombreLista"];

//Cogemos el campo de la lista a ocultar
SPField field = list.Fields["nombreCampo"];

//Seteamos las propiedades del campo
field.ShowInDisplayForm = false; //El campo no se mostrará en el formulario de display de los ítems
field.ShowInEditForm = true; //El campo se mostrará en el formulario de edición de ítems
field.ShowInNewForm = true; //El campo se mostrará en el formulario de nuevos ítems
field.ShowInVersionHistory = false; //El campo no se mostrará en el historial de versiones
field.ShowInListSettings = true; //El campo se mostrará en la configuración de la lista

//Actualizamos el campo
field.Update();


Una forma sencilla de decidir en qué formularios son visibles determinados campos, eso sí, no hay que olvidar hacerlo para todas las listas en las que el campo esté presente.