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 创建和使用视图

如何解决在同一 SharePoint Online 网站中使用 Excel 创建列表时在 SharePoint 中弹出的错误

.Net Core 下载 SharePoint Online 文件