Sharepoint Online 使用 C# / CSOM 更改 WebPart 视图查询
Posted
技术标签:
【中文标题】Sharepoint Online 使用 C# / CSOM 更改 WebPart 视图查询【英文标题】:Sharepoint Online Change WebPart View Query using C# / CSOM 【发布时间】:2017-10-11 10:10:24 【问题描述】:我尝试使用 C# 更改默认视图查询,但它不起作用。我可以更改 JSLink 属性,但不能更改 XmlDefinition。有什么想法可以解决或我做错了什么?
var webPart = listWebPart.WebPart.
clientContext.Load(webPart.Properties);
clientContext.ExecuteQuery();
webPart.Properties["XmlDefinition"] = newQuery;
listWebPart.SaveWebPartChanges();
clientContext.Load(listWebPart);
clientContext.ExecuteQuery();
它是某个页面上的列表 webpart。
【问题讨论】:
通过本地安装,您将使用 LimitedWebPartManager 来检索视图,并通过反射和 xml 节点修改来更改它。示例答案sharepoint.stackexchange.com/questions/206309/…。希望这会有所帮助。 是的,内部部署更容易进行更改。我在网上有问题。我已经尝试过反射 - 返回 null。 【参考方案1】:您也可以在 SharePoint Online 上使用 GetLimitedWebPartManager
函数获取页面的 LimitedWebPartManager
MSDN。然后,您可以使用 LimitedWebPartManager
加载 WebPart,如下所示:
var page = ctx.Web.GetFileByServerRelativeUrl(pageUrl);
LimitedWebPartManager wpMgr = page.GetLimitedWebPartManager(Microsoft.SharePoint.Client.WebParts.PersonalizationScope.Shared);
ctx.Load(wpMgr.WebParts);
ctx.ExecuteQuery();
这将加载页面上的所有 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 部件属性
【讨论】:
以上是关于Sharepoint Online 使用 C# / CSOM 更改 WebPart 视图查询的主要内容,如果未能解决你的问题,请参考以下文章
如何授权 .NET 5.0 / C# 应用程序在没有用户交互的情况下与 Microsoft 365 SharePoint Online 交互?
SharePoint Online和SharePoint 2016 导出到Excel 表错误
SharePoint Online 开发篇:SharePoint Hosted Apps获取用户ID
如何解决在同一 SharePoint Online 网站中使用 Excel 创建列表时在 SharePoint 中弹出的错误