使用C#/CSOM进行Sharepoint联机更改Web部件视图查询

使用C#/CSOM进行Sharepoint联机更改Web部件视图查询,c#,web-parts,sharepoint-online,csom,C#,Web Parts,Sharepoint Online,Csom,我尝试使用C#更改默认视图查询,但它不起作用。我可以更改JSLink属性,但不能更改XmlDefinition。有没有解决的办法或者我做错了什么 var webPart = listWebPart.WebPart. clientContext.Load(webPart.Properties); clientContext.ExecuteQuery(); webPart.Properties["XmlDefinition"] = newQuery; listWebPart.SaveWebP

我尝试使用C#更改默认视图查询,但它不起作用。我可以更改JSLink属性,但不能更改XmlDefinition。有没有解决的办法或者我做错了什么

var webPart = listWebPart.WebPart.
clientContext.Load(webPart.Properties);
clientContext.ExecuteQuery();    
webPart.Properties["XmlDefinition"] = newQuery;
listWebPart.SaveWebPartChanges();
clientContext.Load(listWebPart);
clientContext.ExecuteQuery();

它是在某个页面上列出Web部件。

您也可以通过SharePoint Online上的
GetLimitedWebPartManager
功能获得该页面的
LimitedWebPartManager
。然后,您可以使用
LimitedWebPartManager
加载Web部件,如下所示:

var page = ctx.Web.GetFileByServerRelativeUrl(pageUrl);
LimitedWebPartManager wpMgr = page.GetLimitedWebPartManager(Microsoft.SharePoint.Client.WebParts.PersonalizationScope.Shared);
ctx.Load(wpMgr.WebParts);
ctx.ExecuteQuery();
这将加载页面上的所有Web部件。然后,您可以使用所需Web部件的索引获取该Web部件的
WebPartDefinition

WebPartDefinition webPartDef = wpMgr.WebParts[webpartIndex];
ctx.Load(webPartDef);
ctx.ExecuteQuery();
现在,您可以最终更新所需的特性并保存定义:

webPartDef.WebPart.Properties["XmlDefinition"] = newQuery;
webPartDef.SaveWebPartChanges();
webPartDef.CloseWebPart();
ctx.ExecuteQuery();

希望这将帮助您更新Web部件属性

通过内部安装,您可以使用LimitedWebPartManager检索视图,并通过反射和xml节点修改来更改它。样本答案。希望这有点帮助。是的,前提条件更容易改变。我在网上有问题。我已经尝试过反射-返回null。