c# - C# sharepoint 如何从特定视图中检索列表项
问题描述
我想检索特定视图的所有列表项。现在我可以检索项目,但每次我有 22000 个项目。但是在主要视图中我只有两个项目。
我的代码基于 Stackoverflow 中的其他帖子编写的:
using (var ctx = new ClientContext("http://sp2.intranet.mmmm.net/LWW/Europe/Warsaw/loc/eng/"))
{
Web web = ctx.Web;
var tasksList = web.Lists.GetByTitle("Collaboration-Intracompany");
ctx.ExecuteQuery();
Microsoft.SharePoint.Client.View view = tasksList.Views.GetByTitle("Main");
ctx.Load(view);
ctx.ExecuteQuery();
CamlQuery camlQuery1 = new CamlQuery();
camlQuery1.ViewXml = view.ViewQuery;
// camlQuery1.ViewXml = @"<View><Query><Where><IsNotNull><FieldRef Name='ID' /></IsNotNull></Where></Query><ViewFields><FieldRef Name='ID' /></ViewFields></View>";
//camlQuery1.ViewXml = @"<View><Query><Where><Eq><FieldRef Name=\'DisplayName\' /><Value Type=\'Text\'>Main</Value></Eq></Where></Query></View>";
ListItemCollection listItems = tasksList.GetItems(camlQuery1);
ctx.Load(listItems);
ctx.ExecuteQuery();
}
我当前的 ViewXml 如下。它返回 4 个具有“ENG In Progress”的项目。但这4项来自不同的观点。如何过滤以仅从视图 Main 返回项目?
CamlQuery camlQuery1 = new CamlQuery();
camlQuery1.ViewXml = "<View Name="{326A70B3-515F-4B92-B8FA-506865D192AF}" DefaultView="TRUE" Type="HTML" TabularView="FALSE" DisplayName="Main" Url="/LWW/Europe/Warsaw/loc/eng/Lists/CollaborationIntracompany/all.aspx" Level="1" BaseViewID="1" ContentTypeID="0x" ImageUrl="/_layouts/images/generic.png">
<ViewFields>
<FieldRef Name="LinkTitle" />
<FieldRef Name="Task_x0020_Status" />
<FieldRef Name="Priority" />
<FieldRef Name="Assigned_x0020_To2" />
<FieldRef Name="Deadline" />
<FieldRef Name="Author" />
<FieldRef Name="Modified" />
<FieldRef Name="Activity" />
</ViewFields>
<Query>
<Where>
<Eq>
<FieldRef Name="Task_x0020_Status" />
<Value Type="Text">ENG In Progress</Value>
</Eq>
</Where>
</Query>
<Aggregations Value="Off" />
<RowLimit Paged="TRUE">300</RowLimit>
<Mobile MobileItemLimit="3" MobileSimpleViewField="LinkTitle" />
<Toolbar Type="Standard" ShowAlways="TRUE" />
<XslLink Default="TRUE">main.xsl</XslLink>
<ParameterBindings>
<ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)" />
<ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(wss,noXinviewofY_DEFAULT)" />
</ParameterBindings>
</View>";
ListItemCollection listItems = tasksList.GetItems(camlQuery1);
当我删除查询时:
camlQuery1.ViewXml = ""
+ "<View Name='{326A70B3-515F-4B92-B8FA-506865D192AF}' DefaultView='TRUE' Type='HTML' TabularView='FALSE' DisplayName='Main' Url='/LWW/Europe/Warsaw/loc/eng/Lists/CollaborationIntracompany/all.aspx' Level='1' BaseViewID='1' ContentTypeID='0x' ImageUrl='/_layouts/images/generic.png'>"
+ "<ViewFields>"
+ "<FieldRef Name='LinkTitle' /><FieldRef Name='Task_x0020_Status' /><FieldRef Name='Priority' /><FieldRef Name='Assigned_x0020_To2' /><FieldRef Name='Deadline' /><FieldRef Name='Author' /><FieldRef Name='Modified' /><FieldRef Name='Activity' /></ViewFields>"
// + "<Query><Where><Eq><FieldRef Name='Task_x0020_Status' /><Value Type='Text'>ENG In Progress</Value></Eq></Where></Query>"
+ "<Aggregations Value='Off' /><RowLimit Paged='TRUE'>300</RowLimit><Mobile MobileItemLimit='3' MobileSimpleViewField='LinkTitle' />"
+ "<Toolbar Type='Standard' ShowAlways='TRUE' /><XslLink Default='TRUE'>main.xsl</XslLink><ParameterBindings>"
+ "<ParameterBinding Name='NoAnnouncements' Location='Resource(wss,noXinviewofY_LIST)' />"
+ "<ParameterBinding Name='NoAnnouncementsHowTo' Location='Resource(wss,noXinviewofY_DEFAULT)' /></ParameterBindings></View>";
它返回 300 个项目,因为限制是 300。在图片上,您可以看到 Main 视图只有 4 个位置。如何获得这 4 个职位?
解决方案
我以前见过这方面的东西。
尝试
camlQuery1.ViewXml = "<View><Query>" + view.ViewQuery + "</Query></View>";
干杯
特鲁兹
推荐阅读
- c# - 如何根据梯度计算/分配顶点的权重
- python - Pip install 被杀 - 内存不足 - 如何解决它?
- php - 在所有 URL 中设置 PHP 语言变量
- python - 如何防止打印值时出现空格
- sql-server - 使用pyodbc库在sql连接字符串中混合字符串和输入变量 - Python
- python - 当c没有继承时,每个对象如何与pyObject相关
- vba - 如何在页眉的 Word 文档的每一页上插入特定图像(来自 URL)
- java - 用允许的不出现替换字符串中的所有连续重复项
- eclipse - 无法使用团队资源管理器克隆 TFS Git 存储库
- java - 无法在 web.xml 中加载用户定义的过滤器:com.xxx.CORSFilter