2017-05-12 52 views
0

我尝试使用C#更改默认视图查询,但它不起作用。我可以更改JSLink属性,但不能更改XmlDefinition。任何想法解决方法或我做错了什么?Sharepoint在线更改WebPart使用C#/ CSOM查看查询

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

这是一些页面上的列表webpart。

+0

使用内部部署安装时,您可以使用LimitedWebPartManager来检索视图,并使用反射和xml节点修改来更改它。示例回答https://sharepoint.stackexchange.com/questions/206309/how-to-modify-xsltlistviewwebpart-xmldefinition-property-using-powershell/212387。希望这有所帮助。 – tinamou

+0

是的,内部部署更容易进行更改。我在网上遇到问题。我已经尝试过反射 - 返回null。 – Rhonin

回答

0

您也可以在SharePoint Online上获得LimitedWebPartManager的网页以及GetLimitedWebPartManager函数,MSDN。然后,您可以使用LimitedWebPartManager如下加载的WebParts:

var page = ctx.Web.GetFileByServerRelativeUrl(pageUrl); 
LimitedWebPartManager wpMgr = page.GetLimitedWebPartManager(Microsoft.SharePoint.Client.WebParts.PersonalizationScope.Shared); 
ctx.Load(wpMgr.WebParts); 
ctx.ExecuteQuery(); 

这将加载网页上的所有的webpart。然后,您可以得到web部件的WebPartDefinition你需要使用它的指数:

WebPartDefinition webPartDef = wpMgr.WebParts[webpartIndex]; 
ctx.Load(webPartDef); 
ctx.ExecuteQuery(); 

你现在终于可以更新所需的性能和保存定义:

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

希望这将帮助你更新你的WebPart属性

相关问题