1

我正在自定义页面文档库中显示的字段(单击站点操作->所有站点内容->页面显示的表格)。

比我更了解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();
            }
        }
    }

该代码肯定会在激活该功能时执行,所以我显然做错了什么。我已经寻找解决方案,所以如果我在谷歌或这个网站上遗漏了一些非常明显的东西,我深表歉意。

4

1 回答 1

2

这是因为对 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();
}
于 2009-04-22T10:52:05.640 回答