lunes, 20 de julio de 2009

Campos de Sharepoint no Guardan Valores

Problema:
Alguno o varios campos no se guardan en el EditForm o el NewForm
 
Síntomas:
La pagina aparentemente aparece bien, pero al guardar los cambios ("__commit"), lo que hemos introducido, no se guardan los datos.
 
Solución:
El databind no esta bien configurado para que se conecten bien los datos.
 
Check List para verificar el funcionamiento
1) El id (Para la parte cliente) tiene que estar generado con un trozo de nombre + un código aleatorio (generalmente es {$pos}) OJO es CASE SENSITIVE , hay que tener cuidado con las mayúsculas
2) El field name es el mismo nombre que tiene el campo en sharepoint
 2.1) Si encontráis "_x0020_" esto se traduce por un espacio, no es otra cosa
3) El item ID siempre tiene que ser @ID
4) El control mode y el primer parámetro del databind varían según la operación que realiza la pagina
 4.1) Si es de Inserción (NewForm) ControlMode="New" y >> ddwrt:DataBind('i'  << nota : La "i" es de INSERT
 4.2) Si es de Edición (EditForm) ControlMode="Edit" y >> ddwrt:DataBind('u' <<  nota : La "u" es de UPDATE
5) En el databind el evento que cambia el valor siempre es ValueChanged , mejor no tocar esto
6) Siempre que aparacezca el ID, no tocar nada porque es justo el campo CLAVE interno de sharepoint el cual NECESITA para realizar la operación
 
En el EditForm
<SharePoint:FormField runat="server" id="NombreCampo{$Pos}" controlmode="Edit" fieldname="NombreCampo" itemid="{@ID}" __designer:bind="{ddwrt:DataBind('u',concat('NombreCampo',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@NombreCampo')}" DisplaySize="10" />
 
En el NewForm
<SharePoint:FormField runat="server" id="NombreCampo{$Pos}" controlmode="New" fieldname="NombreCampo" itemid="{@ID}" __designer:bind="{ddwrt:DataBind('i',concat('NombreCampo',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@NombreCampo')}" DisplaySize="10" />
 
Esto aunque parece muy básico, a mucha gente le da problemas, por ello le he dedicado este post
Saludos
RobertoMarcos.com
 

1 comentario:

  1. Hola, yo tengo un problema. He añadido una nueva columna personalizada de tipo desplegable con unos valores en mi sitio. He modificado el NewForm y EditForm para que aparezca dicho desplegable apuntando a dicha mi columna. Hasta ahí tod bien, el NewForm guarda el valor asignado, y el EditForm me permite modificar dicho valor, vamos, que se guarda y modifica perfecto.

    El problema es el DispForm, ya que aparte de mostrar los campos que tiene, quiero que aparezca el mio, y no hay forma ni metiendo el campo o codigo a mano cogiendo la variable @xxx, ni encuentro forma de añadir el campo de forma gráfica.

    Un saludo, gracias

    ResponderEliminar