好的,有人知道如何/是否可以克隆 SharePoint View ,然后将其添加到列表中。 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!

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

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

最佳答案

如果您使用 SPView.Clone(title, rowlimit, paged, default) 克隆 SPView,则它会作为新 View 自动添加到该列表中。或者,至少是在您调用 Update() 时(很像 SPList.Items.Add())。例如,我执行以下操作以创建仅在查询中有所不同的克隆 View :

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();

现在我的列表(thisList,就像它一样)有一个新 View ,它具有与默认 View 相同的所有属性,除了现在它按列“dlCategory”分组并过滤掉“dlPriority”不是 2 的任何内容。
你发布这个已经几个月了,但我想我会把它留给其他在搜索这些东西时遇到这个问题的人。

关于c# - 将克隆的 SPView 添加到列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1847144/

10-12 02:21