Configuración del valor predeterminado para la columna de metadatos programáticamente

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/10551

  •  16-10-2019
  •  | 
  •  

Pregunta

Estoy tratando de establecer el valor de metadatos para una carpeta en una biblioteca de documentos con el siguiente código:

using (SPSite siteCollection = new SPSite("http://dev.site.com"))
        {
            using (SPWeb web = siteCollection.OpenWeb())
            {
                SPList customDocumentLibrary = web.Lists["Program Documents"];
                MetadataDefaults columnDefaults = new MetadataDefaults(customDocumentLibrary);

                SPFolder testFolder = customDocumentLibrary.RootFolder.SubFolders["Programs"];

                columnDefaults.SetFieldDefault("/Program Documents/Programs/Academics", "Programs", "Academics");
                columnDefaults.Update();
            }

        }

Recibo el siguiente error:

The given value for a taxonomy field was not formatted in the required <int>;#<label>|<guid> format. 

¿Alguien tiene un ejemplo de cómo pasar en los parámetros para SetFieldDefault ()? No estoy seguro de a qué se refiere el int; #Label en el mensaje de error (aunque tengo el GUID del campo de taxonomía).

¿Fue útil?

Solución

Por lo tanto, resulta que el valor que necesita para pasar por el valor de la taxonomía es el siguiente:

LCID; #MERT NAME | GUID del término

p.ej:

1033; #academics | BC943091-79AC-4F5F-A79B-205E8E717823

El código completo para establecer la columna de metadatos predeterminada está aquí:

        using (SPSite siteCollection = new SPSite("http://www.yoursite.com"))
        {
            using (SPWeb web = siteCollection.OpenWeb("/yourweb/"))
            {

                SPList customDocumentLibrary = web.Lists["Documents"];
                SPFolder rootFolder = customDocumentLibrary.RootFolder;

                MetadataDefaults columnDefaults = new MetadataDefaults(customDocumentLibrary);

                columnDefaults.RemoveAllDefaults();
                columnDefaults.SetFieldDefault(rootFolder, "Programs", "1033;#Academics|bc943091-79ac-4f5f-a79b-205e8e717823");
                columnDefaults.Update();
            }

        }

Otros consejos

Aunque podría funcionar bien proporcionar el LCID en cuanto al valor predeterminado, no es lo que se supone que debe suministrar. Debe suministrar la identificación del ListItem en la lista oculta "/listas/taxonomyhiddenlist" que corresponde al término que está configurando como predeterminado. Esta lista es algún tipo de caché de todos los términos que usa dentro de su sitio, que se explica con más detalle aquí:http://www.wictorwilen.se/post/dissecting-the-sharepoint-2010-taxonomy-fields.aspx

¡Espero que esto ayude!

Si está tratando con múltiples valores de taxonomía, los valores están separados;#

Licenciado bajo: CC-BY-SA con atribución
scroll top