No podemos cambiar el propietario de un Elemento de Lista.
Ni en Edición ni vinculando una lista, ni desde excel ni desde access
Motivo:
Los campos sharepoint Propietario (autor) y Editor son de solo lectura, por lo que los renderiza en Modo Visualización.
Solución Para Edition via Web:
1º Abrir el EditForm.aspx de la lista a la que queremos cambiarle los propietarios de los listItems
2º Crear un dataFormWebPart en la parte inferior usando el Sharepoint Designer
3º Incluir Los campos @Editor y @Author insertando con la opción Single EditForm
4º Filtrar la lista para
4.1 Crear un parámetro al web part ITEMID mapeado al valor de ID de la querystring (Poner valor por defecto"1")
4.2 Ajustar el Filter con el designer Poniendo ID=ITEMID
5º Buscar
<xsl:value-of select="@Author" disable-output-escaping="yes"/>
Cambiarlo por:
<SharePoint:FormField runat="server" id="Author{@ID}" ControlMode="Edit" FieldName="Author" ItemId="{@ID}" __designer:bind="{ddwrt:DataBind('u',concat('Author',@ID),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Author')}"/>
6º Buscar
<xsl:value-of select="@Editor" disable-output-escaping="yes"/>
Cambiarlo por:
<SharePoint:FormField runat="server" id="Editor{@ID}" ControlMode="Edit" FieldName="Editor"
ItemId="{@ID}" __designer:bind="{ddwrt:DataBind('u',concat('Editor',@ID),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Editor')}"/>
7º Pulsar en el Botón save y añadirle el FormAction de RedirectToSource
8º Guardar
Consejo de Seguridad: Se puede ocultar el webpart si no se tiene permiso así solo un administrador podría hacer estas cosas.
Solución para cargas Masivas:
Crear un miniworkflow que cambie el propietario cogiendolo de un campo de texto creado para ese efecto.
Aquí dejo un trozo de código que puede ser útil.
SPSite site = new SPSite(siteUrl);
SPWeb web = site.OpenWeb();
web.AllowUnsafeUpdates = true;
SPList list = web.Lists["Test"];
SPListItemCollection collection = list.Items;
foreach (SPListItem item in collection )
{
SPUser user = web.EnsureUser(UserName Login Name);
//1073741823;#System Account //User name values are in this format ID;#Login Name
string value1 = user.ID + ";#" + user.Name; //Create in same format
item["Author"] = value1; //for Created By field
item["Editor"]=value1 ; //Modified By field
item.Update(); //Update the item
}
list.Update();
web.Update();
No hay comentarios:
Publicar un comentario