SharePoint: сделать поле списка скрытым программно - PullRequest
8 голосов
/ 14 ноября 2008

Я пытаюсь скрыть поле «Заголовок» в списке. Это не похоже на работу:

SPList myList;
...
SPField titleField = myList.Fields.GetField("Title");
//titleField.PushChangesToLists = true; <-- doesn't seem to make a difference
titleField.ShowInEditForm = false;
titleField.ShowInDisplayForm = false;
titleField.ShowInNewForm = false;
titleField.Update();
//myList.Update(); <-- make no difference

Что я делаю не так?

Ответы [ 7 ]

12 голосов
/ 14 ноября 2008

Попробуйте это:

field.Hidden = true;
field.Update();
2 голосов
/ 01 августа 2014

Ни один из приведенных выше примеров установки Hidden true не будет работать, если CanToggleHidden не имеет значение true. Проблема в том, что CanToggleHidden имеет только Get, а не Set, поэтому вам нужно выполнить радикальный «трюк с программированием в SharePoint», используя рефлексию, чтобы сначала перевернуть CanToggleHidden с false на true. Как только вы это сделаете, вы можете изменить Hidden на true (или обратно на false). В Интернете есть множество примеров (хотя не все они написаны правильно). При необходимости, я могу выкопать пример PowerShell, который работает.

if(field.CanToggleHidden) {
   field.Hidden = false;
}
else
{
   // display an error message or write to your favorite logging location
   // explaining that there is no hope of changing the value of Hidden until
   // CanToggleHidden changes to TRUE first.
}
0 голосов
/ 20 февраля 2014

Решение выше для скрытия поля везде. Он также будет скрыт в обзоре столбцов вашего списка.

Если вы хотите только скрыть поле в определенном списке. Или, если вы все еще манипулируете полем (установите обратно в видимое), используя страницу настроек списка. Вам необходимо установить свойство «Скрытый» поля в свойстве «FieldLinks» списка.

myList.FieldLinks["SomeField"].Hidden = true;
0 голосов
/ 23 ноября 2010

попробуйте это, это будет работать ... Поле заголовка называется LinkTitle ... другие поля могут быть скрыты таким же образом.

SPView view = list.DefaultView;    
if(view.ViewFields.Exists("LinkTitle")) 
{    
   view.ViewFields.Delete("LinkTitle");    
   view.Update();    
}
0 голосов
/ 23 апреля 2010

Существует цена, которую вы платите, когда используете скрытое имущество.

Было обнаружено, что установка скрытого столбца удалит возможность удалить его с помощью кода.

0 голосов
/ 14 ноября 2008

Я считаю, что видимость полей в списках контролируется представлением по умолчанию, которое «получает» пользователь. Разве вы не хотите изменить вид? Я знаю, что вы можете получить Представления для списка, а также представление по умолчанию.

Я просто плевок ...

0 голосов
/ 14 ноября 2008

Убедитесь, что вы захватываете новый экземпляр SPWeb.

using (SPSite site = new SPSite(webUrl))
{
    using (SPWeb web = site.OpenWeb())
    {
        try
        {
            //... Get SPList ...
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...