Как удалить поля из пользовательского списка в SharePoint, которые были добавлены через элемент меню «Добавить из существующих столбцов сайта?

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

  •  16-10-2019
  •  | 
  •  

Вопрос

У меня есть пользовательский список, и я добавил поле «изображение страницы», нажав на ссылку «Добавить из существующих столбцов сайта» на странице «Настройки» для списка. Теперь я хотел бы удалить поле, но нажав на имя поля на странице «Настройки», не дает функциональности «Удалить».

Это было полезно?

Решение

«Image Page» - это особый вид поля SharePoint, определяемое как Запечатанный. Анкет Это означает, что его нельзя удалить из пользовательского интерфейса после добавления. Однако его можно снять программно:

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

Для справки, поле определено в C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\PublishingResources\PublishingColumns.xml.

Атрибуция кредита: мой отвечать На переполнении стека.

Другие советы

Помимо герметизации, поле может быть только для чтения, скрыта и т. Д. Все эти факторы могут предотвратить удаление поля. Более подходящий метод удаления поля списка - следующее:

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
}

Прочтите мою статью Как удалить поле списка/столбец программно, Узнать больше.

Я видел это раньше, когда вы добавляете поля, которые SharePoint считает недолетними.

Вам, вероятно, придется удалить его программно или такой инструмент, как SharePointManager

Как насчет того, чтобы скрыть поле, используя управление типами контента?

Настройки списка -> Расширенные настройки -> Разрешить управление типами контента Нажмите на тип контента -> Нажмите поля изображения страницы -> Выберите Hidden?

  1. Сначала перейдите к Home Option на странице по умолчанию
  2. Нажмите на имя списка, которое вы создали.
  3. Нажмите на параметр «Настройка списка» в настройке вкладки.
  4. Нажмите на имя столбца в параметре столбцов
  5. Затем вы получите возможность удалить. Нажмите, и это будет удалено.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top