Настройка просмотра страниц в Sharepoint - PullRequest
1 голос
/ 22 апреля 2009

Я настраиваю поля, отображаемые в библиотеке документов Pages (в отображаемой таблице нажимаются действия сайта-> весь контент сайта-> страницы).

Кто-то, кто знает больше о sharepoint, предложил мне, что мне, возможно, следует удалить поля, которые мне не нужны, из программного представления по умолчанию при активации функции, поэтому я написал этот код, который выглядит как очень нелегкое решение, а также не работает.

SPWeb web = properties.Feature.Parent as SPWeb;

        if (web != null)
        {
            SPList list = web.Lists["Pages"] as SPList;
            if (list != null)
            {
                foreach (SPField field in list.Fields)
                {
                    if (field.Title != "Type" &&
                        field.Title != "Name" &&
                        field.Title != "Modified" &&
                        field.Title != "Checked Out To" &&
                        field.Title != "Page Layout")
                    {
                        if (list.DefaultView.ViewFields.Exists(field.InternalName))
                        {
                            list.DefaultView.ViewFields.Delete(field);                                
                        }
                    }
                }

                list.DefaultView.Update();
            }
        }
    }

Код определенно выполняется при активации функции, поэтому я, очевидно, что-то делаю не так. Я искал решение для этого, поэтому я прошу прощения, если я пропустил что-то в Google или на этом сайте, что является очевидным.

1 Ответ

2 голосов
/ 22 апреля 2009

Это потому, что изменения в list.DefaultView.ViewFields выходят за рамки. Коллекция обновляется из базы данных до вызова Update (). Попробуйте:

if (list != null)
{
    SPView view = list.DefaultView;

    foreach (SPField field in list.Fields)
    {
        if (field.Title != "Type" &&
            ...
            field.Title != "Page Layout")
        {
            if (view.ViewFields.Exists(field.InternalName))
            {
                view.ViewFields.Delete(field);                                
            }
        }
    }

    view.Update();
}
...