在Sharepoint中自定义页面视图

时间:2009-04-22 09:30:35

标签: sharepoint wss

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

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

代码在激活功能时确定执行,所以我显然做错了。我已经搜索了这个解决方案,所以如果我在谷歌或这个网站遗漏了一些非常明显的事情,我会道歉。

1 个答案:

答案 0 :(得分: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();
}