如何控制视图里边的分组属性

forum2621 2010-02-01 07:03:29
手工创建视图时,我们可以配置分组属性。
如果用程序创建视图,如何控制分组属性。
从view.query中可以看到如下代码:
<GROUPBY GroupLimit="100" Collapse="TRUE"><FIELDREF Name="Col1" /><FIELDREF Name="Col2" /></GROUPBY>

但是我把上面代码写入后,分组属性并没有起作用(手工修改此视图也没有在分组选项中看到写入的代码)

各位大侠给个解决方案吧,谢谢!
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
forum2621 2010-02-09
  • 打赏
  • 举报
回复
呵呵,我已经搞定了,caml语句大小写问题。我五楼的写法是正确的
Jinglecat 2010-02-04
  • 打赏
  • 举报
回复
编程创建的 View 也是可以 Group 的。

注意,Query 中的 FieldRef Name 必须是 Field 的 InternalName,而不是我们看到的 DisplayName,

我用下面代码,对 Contact List 成功创建一个分组视图并具有预期效果,

建议你把你的 query 先精简,只保留一个 group 一个字段,逐步增加字段与where 子句来排错

SPWeb web = SPContext.Current.Web;

SPList lst = web.Lists["MyContacts"];
//
SPViewCollection views = lst.Views;
//
StringCollection viewFields = new StringCollection();
viewFields.Add("Full Name");
viewFields.Add("City");
//
string viewQuery = @"<GroupBy Collapse=""TRUE"" GroupLimit=""100""><FieldRef Name=""WorkCity"" /></GroupBy>"; // 按城市分组,注意城市 InternalName 是 WorkCity

views.Add(txtViewName.Text, viewFields, viewQuery, 100, true, false, SPViewCollection.SPViewType.Html, false);
//
lst.Update();
forum2621 2010-02-02
  • 打赏
  • 举报
回复
query 写法:



StringBuilder stringBuilder = new StringBuilder();

stringBuilder.Append(" <Where>");
stringBuilder.Append(" <Or>");
stringBuilder.Append(" <Eq>");
stringBuilder.Append(" <FieldRef Name=\"ContentType\" />");
stringBuilder.Append(" <Value Type=\"Text\">My Content Type</Value>");
stringBuilder.Append(" </Eq>");
stringBuilder.Append(" <IsNotNull>");
stringBuilder.Append(" <FieldRef Name=\"Description\" />");
stringBuilder.Append(" </IsNotNull>");
stringBuilder.Append(" </Or>");
stringBuilder.Append(" </Where>");
stringBuilder.Append(" <GroupBy>");
stringBuilder.Append(" <FieldRef Name=\"Title\" Ascending=\"False\" />");
stringBuilder.Append(" </GroupBy>");
stringBuilder.Append(" <OrderBy>");
stringBuilder.Append(" <FieldRef Name=\"_Author\" />");
stringBuilder.Append(" <FieldRef Name=\"AuthoringDate\" />");
stringBuilder.Append(" <FieldRef Name=\"AssignedTo\" Ascending=\"True\" />");
stringBuilder.Append(" </OrderBy>");

string query = stringBuilder.ToString();

forum2621 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 time_is_life 的回复:]
说说详细步骤,不知道你怎么创建的视图
[/Quote]

首先手工创建一个list,并创建一个view作为模板。
然后调用list.view.add方法根据view模板创建一个新的view,在创建新view的时为view的query属性赋值。步骤就是这样子。
SPView templateView=list.Views["Template"];
string query="<Where>.....</Where>";
SPView newView = list.Views.Add(viewName, templateView.ViewFields.ToStringCollection(), query, templateView.RowLimit, templateView.Paged, false);
forum2621 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 foxdave 的回复:]
结贴率过低
[/Quote]
帖子还没人回答呢,等等再结贴。
time_is_life 2010-02-01
  • 打赏
  • 举报
回复
说说详细步骤,不知道你怎么创建的视图
Justin-Liu 2010-02-01
  • 打赏
  • 举报
回复
结贴率过低

3,242

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 SharePoint
社区管理员
  • SharePoint社区
  • 霖雨
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧