Wie entfernen Sie Felder aus einer benutzerdefinierten Liste in SharePoint, die über das Menüpunkt "Aus der vorhandenen Site -Spalten hinzufügen" hinzugefügt wurden?

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

  •  16-10-2019
  •  | 
  •  

Frage

Ich habe eine benutzerdefinierte Liste und habe ein Feld "Seitenbild" hinzugefügt, indem ich auf die Seite "Einstellungen" auf den Link "Aus vorhandenen Site -Spalten hinzufügen" für die Liste klickt. Ich möchte jetzt das Feld entfernen, aber klicken Sie auf den Feldnamen auf der Seite "Einstellungen", sondern liefert keine "Löschen" -Funktionalität.

War es hilfreich?

Lösung

"Seitenbild" ist eine besondere Art von SharePoint -Feld als definiert als Versiegelt. Dies bedeutet, dass es nach dem Hinzufügen nicht aus der Benutzeroberfläche entfernt werden kann. Es kann jedoch programmatisch entfernt werden:

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

Als Referenz ist das Feld in definiert in C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\PublishingResources\PublishingColumns.xml.

Attribution Kredit: meine Antworten auf Stack Overflow.

Andere Tipps

Abgesehen von der Versiegelung kann ein Feld schreibgeschützt, versteckt und usw. sein. Alle diese Faktoren können verhindern, dass das Feld löscht. Die geeignetere Methode zum Löschen eines Listenfeldes ist das folgende:

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
}

Lesen Sie meinen Artikel So löschen Sie ein Listenfeld/eine Spalte programmatisch, um mehr zu lernen.

Ich habe das schon einmal gesehen, wenn Sie Felder hinzufügen, die SharePoint als nicht tretbar betrachtet.

Sie müssen es wahrscheinlich programmgesteuert oder ein Werkzeug wie SharePointManager

Wie wäre es, wenn Sie das Feld mithilfe von Inhaltstypen verwalten?

Listeinstellungen -> Erweiterte Einstellungen -> Ermöglichen Sie Inhaltstypen Verwalten Klicken Sie auf Inhaltstyp -> Klicken Sie auf das Bild des Seitenbildes -> versteckt auswählen?

  1. Gehen Sie zunächst auf der Standardseite zur Option Home
  2. Klicken Sie auf den Listennamen, den Sie erstellt haben.
  3. Klicken Sie auf die Option "Listeneinstellung" im Registerkarte "Einstellung".
  4. Klicken Sie auf Spaltenname in Spaltenoption
  5. Dann erhalten Sie die Option zum Löschen. Drücken Sie es und es wird gelöscht.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top