Comment avez-vous supprimer les champs d'une liste personnalisée dans SharePoint qui ont été ajoutés par l'élément de menu «Ajouter des colonnes de sites existants?

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

  •  16-10-2019
  •  | 
  •  

Question

J'ai une liste personnalisée, et je l'ai ajouté un champ « Page Image » en cliquant sur 'Ajouter des colonnes existantes du site de lien sur la page Paramètres de la liste. Je voudrais maintenant supprimer le champ, mais en cliquant sur le nom du champ sur les rendements des paramètres aucune fonctionnalité « Supprimer ».

Était-ce utile?

La solution

"Image de" est un type particulier de champ SharePoint défini comme scellé . Cela signifie qu'il ne peut pas être retiré de l'interface utilisateur une fois ajouté. Cependant, il peut être retiré par programme:

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

Pour référence, le champ est défini à C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\PublishingResources\PublishingColumns.xml.

Attribution de crédit: mon réponse sur débordement de la pile.

Autres conseils

En plus d'être scellé, un champ peut être en lecture seule, caché et etc. Tous ces facteurs pourraient empêcher le champ de la suppression. La méthode plus appropriée pour supprimer un champ de liste est la suivante:

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
}

Lire mon article Comment Suppression d'une liste de champs / colonne programme, pour en savoir plus.

J'ai vu auparavant lorsque vous ajoutez des champs que SharePoint considèrent non supprimable.

Vous devrez probablement supprimer un programme ou un outil comme SharePointManager

Que diriez-vous cacher le champ à l'aide de gérer les types de contenu?

Liste Paramètres -> Paramètres avancés -> Gérer Autoriser les types de contenu Cliquez sur le type de contenu -> cliquez sur le champ de l'image page -> Sélectionnez Masqué

  1. Tout d'abord aller à l'option Accueil dans la page par défaut
  2. Cliquez sur le nom de la liste que vous avez créé.
  3. Cliquez sur l'option de réglage liste dans la mise volet de l'onglet.
  4. Cliquez sur le nom de la colonne dans l'option Colonnes
  5. Ensuite, vous obtenez pour supprimer l'option. Appuyez dessus et il sera supprimé.
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top