代码之家  ›  专栏  ›  技术社区  ›  Charlie Gevious

在SharePoint中自定义页面视图

  •  1
  • Charlie Gevious  · 技术社区  · 15 年前

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

    有人比我更了解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 回复  |  直到 15 年前
        1
  •  2
  •   Alex Angas Colin    15 年前

    这是因为对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();
    }
    
    推荐文章