¿Cómo eliminar campos de una lista personalizada en SharePoint que se han añadido a través de la opción de menú 'Añadir de columnas de sitio existentes'?

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

  •  16-10-2019
  •  | 
  •  

Pregunta

Tengo una lista personalizada, y he añadido un campo 'Imagen de la página' haciendo clic en el "Añadir de columnas de sitio existentes de enlace en la página de configuración de la lista. Ahora me gustaría para eliminar el campo, pero al hacer clic en el nombre del campo en los rendimientos de páginas de configuración ninguna funcionalidad 'Borrar'.

¿Fue útil?

Solución

"Imagen de la página" es un tipo especial de campo de SharePoint definida como Sellado . Esto significa que no pueden ser eliminados de la interfaz de usuario una vez añadido. Sin embargo se puede quitar mediante programación:

SPList list = web.Lists["CustomTest"];
SPField f = list.Fields["Page Image"];
f.Sealed = false;
f.Update();
f.Delete();

Para referencia, el campo está definido en C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\PublishingResources\PublishingColumns.xml.

Reconocimiento de crédito: mi respuesta desbordamiento de pila.

Otros consejos

Además de ser sellada, un campo puede ser de sólo lectura, oculto y etc. Todos estos factores podría evitar que el campo de la eliminación. El método más adecuado para eliminar un campo de la lista es la siguiente:

public static bool RemoveField(SPField spField)
{
    if (spField == null)
    {
        WriteErrorToLog("spField is null! Please, provide a valid one");
        return false;
    }

    bool res = false;
    try
    {
        // check if it's a ReadOnly field.
        // if so, reset it
        if (spField.ReadOnlyField)
        {
            spField.ReadOnlyField = false;
            spField.Update();
        }

        // check if it's a Hidden field.
        // if so, reset it
        if (spField.Hidden)
        {
            spField.Hidden = false;
            spField.Update();
        }

        // check if the AllowDeletion property is set to false.
        // if so, reset it to true
        if (spField.AllowDeletion == null || !spField.AllowDeletion.Value)
        {
            spField.AllowDeletion = true;
            spField.Update();
        }

        // If the AllowDeletion property is set,
        // the Sealed property seems not to be examined at all.
        // So the following piece of code is commented.
        /*if(spField.Sealed)
        {
            spField.Sealed = false;
            spField.Update();
        }*/

        // If the AllowDeletion property is set,
        // the FromBaseType property seems not to be examined at all.
        // So the following piece of code is commented.
        /*if(spField.FromBaseType)
        {
            spField.FromBaseType = false;
            spField.Update();
        }*/

        // finally, remove the field
        spField.Delete();
        spField.ParentList.Update();

        res = true;
    }
    catch (Exception ex)
    {
        WriteErrorToLog(ex.Message);
    }

    return res;
}

public static bool RemoveField(SPList spList, string displayNameOrInternalNameOrStaticName)
{
    SPField spField = GetFieldByName(spList, displayNameOrInternalNameOrStaticName);
    if(spField == null)
    {
        WriteErrorToLog(string.Format("Couldn't find field {0}!", displayNameOrInternalNameOrStaticName));
        return false;
    }

    return RemoveField(spField);
}

public static void WriteErrorToLog(string errorMsg)
{
    // write error into log
}

Lea mi artículo Cómo eliminar una lista de campo / columna mediante programación , para obtener más información.

he visto esto antes cuando se agrega campos que SharePoint consideran no eliminable.

Usted probablemente tendrá que eliminar mediante programación o una herramienta como SharePointManager

¿Qué hay de ocultar el campo utilizando gestionar tipos de contenido?

Configuración de la lista -> Configuración avanzada -> Permitir Manejo de tipos de contenido Haga clic en el tipo de contenido -> haga clic en la página campo Imagen -> Seleccionar Ocultos

  1. Primero vaya opción Inicio de página predeterminado
  2. a
  3. Haga clic en el nombre de la lista que ha creado.
  4. Haga clic en la opción de configuración de la lista en la fijación de panel de la pestaña.
  5. Haga clic en el nombre de columna en la opción Columnas
  6. A continuación, se obtiene la opción de borrar. Prensa y será eliminado.
Licenciado bajo: CC-BY-SA con atribución
scroll top