使用C#/CSOM进行Sharepoint联机更改Web部件视图查询
我尝试使用C#更改默认视图查询,但它不起作用。我可以更改JSLink属性,但不能更改XmlDefinition。有没有解决的办法或者我做错了什么使用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
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。