代码之家  ›  专栏  ›  技术社区  ›  Ken Henderson

将克隆的SPView添加到列表中

  •  3
  • Ken Henderson  · 技术社区  · 15 年前

    好的,是否有人知道如何/如果可以克隆SharePoint视图,然后将其添加到列表中。SPVIEWCollection.Add重载不会采用SPVIEW的实例,并且找不到任何指示如何执行此操作的文档。

    例如,我基本上想这样做:

    var myList = SPContext.Current.Web.List;//or something similar
    var baseView = myList.DefaultView;
    var myNewView = baseView.Clone("my view", base.RowLimit, base.Paged, false);
    myNewView.Query = "<Where>......</Where>";
    myList.Views.Add(myNewView);//this overload doesn't exist!
    

    最终结果是,我希望新视图复制原始视图的行为,但更改的查询除外。我愿意走另一条路,但我不知道那是什么。(我注意到BaseViewID属性可能有帮助,但它是只读的)。

    如有任何建议或提示,将不胜感激。

    2 回复  |  直到 8 年前
        1
  •  10
  •   Grace Note    15 年前

    如果使用spview.clone克隆spview(标题、行限制、分页、默认),则会自动将其作为新视图添加到该列表中。或者,至少是在调用update()时(很像splist.items.add())。例如,我执行以下操作来创建仅在查询中不同的克隆视图:

    SPView thisView = thisList.DefaultView;
    thisView = thisView.Clone("High Priority", 100, true, false);
    thisView.Query = "<GroupBy Collapse=\"TRUE\" GroupLimit=\"100\"><FieldRef Name=\"dlCategory\" /></GroupBy><Where><Eq><FieldRef Name=\"dlPriority\"></FieldRef><Value Type=\"Number\">2</Value></Eq></Where>";
    thisView.Update();
    

    现在,我的列表(这个列表,和以前一样)有了一个新的视图,它与默认视图具有所有相同的属性,除了现在它按“dlcategory”列分组,并过滤掉“dlpriority”不是2的任何内容。 你发布这个已经有几个月了,但我想我会把它留给那些在搜索这个东西的时候遇到这个的人。

        2
  •  4
  •   Francisco Aquino    15 年前

    我知道这并不是您所希望的,但是spfiles对于二进制副本的视图有缺陷,因此尝试在重载时传递相同的值:

    SPList list = SPContext.Current.Web.Lists["Test"];
    SPViewview = list.Views["All Items"];
    list.Views.Add(view.Title + "_NEW", view.ViewFields.ToStringCollection(), 
                   view.Query, view.RowLimit, view.Paged, view.DefaultView);

    您将得到一个具有新名称和完全相同内容的新视图。

    推荐文章