Modify title

- 2 mins read

Lo primero advierto que esta practica no esta del todo recomendada. Pero seguro que en más de una ocasión os habéis encontrado con el problema que supone tener el campo Título pre-configurado por SharePoint, (por lo menos deja cambiarle el nombre) pero no deja de ser una limitación en muchos casos que el tipo predeterminado sea un campo alfanumérico de 255 caracteres.

La definición en CAML del campo Título es la siguiente:

<Field Type="Text" DisplayName="Título" MaxLength="255" Name="Title" ColName="nvarchar1" />

Algunas veces he editado este campo usando CAML y he cambiado el tipo (yo por el momento no he tenido problemas al hacerlo pero como he dicho al principio es una practica que no se aconseja). Hoy trasteando he recordado que alguien (no recuerdo quien si no lo pondría) había realizado un webpart para resetear el campo Título, de manera que después se le pudiera cambiar el tipo. De modo que he echado mano de mi webpart csegScript, y en unos minutos he dado con el código.

imports Microsoft.SharePoint 
imports Microsoft.SharePoint.Utilities 
imports Microsoft.SharePoint.WebPartPages 
imports Microsoft.SharePoint.WebControls 
imports System.Web.UI 
imports System 
 
Module Script 
Public Sub Main() 
 
Dim site As SPSite = SPControl.GetContextSite(System.Web.HttpContext.Current) 
Dim allSites As SPWebCollection = site.AllWebs 
Dim subSite As SPWeb = allSites(0) 
 
    if (Param1<>"") and (Param2<>"") then 
    
        Dim list as SPList = subSite.Lists(Param1) 
        Dim field As SPField = list.Fields(Param2) 
        
        output.WriteLine("<br>Current SchemaXml:" + SPEncode.HtmlEncode(field.SchemaXml)) 
        
        Dim schemaXML As String = "<Field Type=""Text""  DisplayName=""" & field.Title & 
                        """ MaxLength=""255"" Name=""" & field.InternalName  & """ ColName=""nvarchar2"" />" 
        
        output.WriteLine("<pre>" & SPEncode.HtmlEncode(schemaXML) & "</pre>") 
        output.flush() 
        
        try 
        
            field.SchemaXml = schemaXML 
            field.Update() 
            output.WriteLine("<font color=red>Ok</font>") 
        
        catch ex As Exception 
        
            output.WriteLine("<font color=red>Error</font>") 
            output.WriteLine(ex.Message) 
        
        end try 
        
        output.WriteLine("<table width=’100%’><tr><td>Name</td><td>Description</td><td>InternalName</td><td>Type</td></tr>") 
        
        output.WriteLine("<tr><td>"+
            SPEncode.HtmlEncode(field.Title)+"</td><td>"+
            SPEncode.HtmlEncode(field.Description)+"</td><td>"+
            SPEncode.HtmlEncode(field.InternalName)+"</td><td>"+
            SPEncode.HtmlEncode(field.TypeAsString)+"</td></tr>") 
        
        output.WriteLine("</table>") 
    
    End If 
 
End Sub 
End Module

Este script requiere el nombre de la lista como Param1 y el nombre del campo a resetear como Param2.

Después de ejecutar el script y entrar a modificar la configuración de la lista y el campo, podeís cambiarle el tipo.